ctrl-w (단어 삭제)를 구성 할 수 있습니까?


40

일반적으로 Ctrl+ W는 마지막 공백으로 다시 삭제합니다.

?와 같은 추가 문자를 사용하도록 구성 할 수 /있습니까?

편집 : 더 명확하게 : 키를 구성하고 싶지 않고 삭제를 중지하고 싶습니다 /.

예:

vim /foo/bar^W
vim /foo/

답변:


29

나를 위해 일한 것은 내 .bashrc에 다음 줄을 추가하는 것이 었습니다.

stty werase undef
bind '\C-w:unix-filename-rubout'

undef 줄이 필요합니다. 그렇지 않으면 bash는 새 바인딩을 무시합니다. C-w


3
그 주목해야한다 stty werase undef어떤 프로그램에서 시계 방향으로 사용에서 당신을 중지합니다 (바인드 당신이 작성한 Readline에서 사용할 수 있습니다)
0fnt

24

Esc와 백 스페이스를 사용하여 슬래시로 구분 된 단어를 삭제할 수 있어야합니다.

이것을 .bashrc에 넣어서 변경할 수 있습니다.

bind '\C-f:unix-filename-rubout'

이제 Ctrl+f 원하는 것을 사용하십시오 .


1
고마워, 그것이 작동하는 명령입니다. Cw의 명령을 덮어 쓰는 방법이 있습니까? 로 변경 C-w:...하면 다음 공간으로 삭제하는 기본 동작이 계속 작동합니다. 다른 키 (예 : F)에서 제대로 작동하는 경우.
SkaveRat

ctrl-w가 쉘에서만 관리한다고 생각하지 않습니다. tty가 관리 할 수도 있습니다. tty 설정은 무엇입니까 stty -a? werase의 기본 문자로 control-w가 있습니까? comman과 함께 tty에서 해당 설정을 제거하면 stty werase undefbash가 예상대로 작동합니까?
eppesuig

23

이 특정 문제의 경우 다음을 사용할 수도 있습니다.

Alt + Backspace

$ cd /home/me/test/a_dir/    # Alt + Backspace
$ cd /home/me/test/          # Alt + Backspace
$ cd /home/me/               # ...

좋은 참고 자료 : bash의 단어 지우기가있는 모험


2
대박! 대부분의 다른 답변은 리 바인딩 제안 Ctrl+w또는 Ctrl + B 또는 뭔가를 unix-filename-rubout하지만, 훨씬 더의 내장 구속력이 있다고 : M-백 스페이스 (Alt + 백 스페이스 또는 Esc 백 스페이스)
콜린 D 베넷

나를 위해 일하지 않았다
ethanjyx

@ethanjyx 아. GNU bash에서 일하고 있습니다. 이 맛에도 있습니까?
fedorqui

7

bash를 사용하면 ~ / .bashrc 파일에 다음을 넣어 원하는 효과를 얻을 수 있습니다.

bind '"\C-w":backward-kill-word'

히트 CTRL+V와 키 조합은 터미널 에뮬레이터 모습을 볼 수 있습니다. 예를 CTRL+bksp들어, ^H또는 다른 터미널에서 다르게 해석 될 수 있습니다 ^?. ^문자와 동일합니다 CTRL.


나는 내 질문에 충분하지 않다고 생각합니다. /다른 키에 delete-word-command를 바인딩하는 방법이 아닌 추가 정지 문자 를 갖고 싶었습니다 . 내 질문을 편집했습니다
SkaveRat

\ Cw에 바인드 된 백킬 (backward-kill) 단어를 사용하면 단어에있는 경우 마지막으로 주어진 슬래시로 거꾸로 지워지며 공백으로 구분 된 단어가 지워집니다. 이것은 당신이 원하는 것이 아닙니다?

내 시스템은 사용 ^F하지만 "\^F"위 스크립트에서 사용 이 작동하지 않습니다
SkaveRat

1
Ctrl문자가 기록 된 \C스크립트에서하지 \^.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.