저는 Kitty 에뮬레이터와 bash 쉘을 사용합니다.
알고 있어요 Ctrl+ w삭제할 수 있어요한 단어터미널에서 (예: Ctrl+ Backspace) 하지만 다음과 같은 것이 있다면 어떨까요?
sh /home/user/dir1/dir2/file.sh
그냥 삭제하고 싶은데요 file.sh
?
이래서 Ctrl+로 삭제 가 안되네요w전체 줄이 삭제됩니다.그리고 수동으로 삭제하고 싶지 않습니다.
하나의 경로 요소만 제거하는 방법에 대한 제안이 있으십니까?
답변1
제가 올바르게 이해했다면 귀하는 bash를 사용하고 있으며 기본 Emacs 스타일로 편집하고 있는 것입니다. 그 다음에Emacs 치트 시트도움이 될 수 있습니다. Alt+Backspace
(backward-kill-word)를 수행하면 마지막 단어의 시작 부분까지 다시 삭제할 수 있습니다.
답변2
bash
라인 편집기로 사용되는 애플리케이션 및 기타 애플리케이션 에서 tty 라인 규칙 설정 readline
에 바인딩된 모든 문자 ( )werase
출력 참조 문자를 다른 위젯에 바인딩하려는 시도는 무시됩니다(AFAICT). 그것에 묶여 있습니다.stty -a
unix-word-rubout
werase
대부분의 시스템에서는 기본 tty 설정 werase
으로 되어 있습니다 .^W
^W
따라서 readline의 다른 내용에 다시 바인딩하려면 먼저 tty 설정을 변경해야 합니다:
stty werase '^O'
werase
다음 중 하나 에 바인딩 ^O
:
stty werase ''
완전히 비활성화하십시오.
그러면 다음을 수행할 수 있습니다.
bind '"\C-w": backward-kill-word'
또는 응용 "\C-w": backward-kill-word
프로그램에 추가하여 단지 .~/.inputrc
readline
bash
^W는 원하는 대로 단어를 제거합니다.성격밑줄도 아닌 일련의 문자나 숫자로 정의됩니다.
그러나 이는 자체 줄 편집기가 없는 응용 프로그램에서 단어를 삭제하기 위해 ^W를 사용할 수 없음을 의미합니다.
또는 완전히 구성 가능한 모든 텍스트 이동/제거 위젯을 zsh
대신 사용할 수 있습니다 .bash
아니면 이미@AndreBeaud가 언급됨기본적으로 readline 의 emacs 모드에 바인딩된 Alt+ Backspace(보통 전송됨 ^[^H
, 후자는 in)를 사용합니다 .^[^?
kitty
backward-kill-word
답변3
unix-filename-rubout
.inputrc에 바인딩 설정
"\C-b":unix-filename-rubout
이 방법은 CTRL B
슬래시나 공백이 나올 때까지 뒤로 삭제하는 것으로 매핑됩니다.
경로에 밑줄이 있으면 백슬래시까지 제거되지 않기 ALT BACKSPACE
때문에 이것이 더 나은 솔루션입니다 .ALT BACKSPACE
밑줄은 단어 경계로 처리됩니다.
물론 다른 키보드 단축키를 선택할 수도 있습니다.