명령 줄에서 단어를 어떻게 삭제하려면 (bash 및 zsh)?


118

명령 행에서 단어를 뒤로 삭제하려면 어떻게해야합니까? 나는 Ctrl+를 사용하여 마지막 '단어'를 삭제하는 일부 편집자에게 정말로 익숙 Backspace하며 명령 줄에서도 그 기능을 원합니다.

나는 현재 Bash를 사용하고 있는데 단어를 뒤로 건너 뛰고 단어를 삭제할 수는 있지만 이것을 빠른 키 또는 Ctrl+ + 이벤트로 사용하고 싶습니다 Backspace.

이것을 어떻게 달성 할 수 있습니까?

답변:


169

ctrlw표준 "kill word"(일명 werase)입니다. ctrlu전체 줄을 죽입니다 ( kill).

로 변경할 수 있습니다 stty.

-bash-4.2$ stty -a
speed 38400 baud; 24 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc -xcase
iflags: -istrip icrnl -inlcr -igncr -iuclc ixon -ixoff ixany imaxbel
        -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl -onocr -onlret -olcuc oxtabs -onoeot
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = <undef>;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;
-bash-4.2$ stty werase ^p
-bash-4.2$ stty kill ^a
-bash-4.2$

실제 제어 문자를 줄에 넣을 필요는 없습니다. stty는 입력 ^한 다음 제어 할 때 문자를 이해 합니다.

이 작업을 수행 한 후 충돌 ctrlp하면 줄에서 단어가 지워집니다. 그리고를 ctrla누르면 전체 줄이 지워집니다.


stty명령을 사용하여 Ctrl-v Ctrl-Backspace Ctrl+BckSpc를 입력 하여 "kill word"를 할당하려고했습니다 stty werase. 리터럴 Ctrl-Backspace 문자를에 대한 인수로 삽입합니다 stty werase. 불행히도 Ctrl-Backspace단어를 삭제하기 위해 입력 할 필요는 없지만 Backspace키로 만 작동 합니다. 따라서 @terdon의 요청을 두 번째로 수행하는 방법을 배우고 싶습니다. 를 werase기본값으로 재설정하려면 을 사용하십시오 stty werase Ctrl-v Ctrl-w.
Timothy Martin

@TimothyMartin 나는 어떻게 해야할지 조금 붙어 ctrl-backspace있습니다. 백 스페이스는 일반적으로 ctrl-h또는 로 전송 ctrl-?되므로 ctrl-backspace어떻게됩니까 ctrl-ctrl-backspace? 나는 다른 무언가가 보내 졌는지 알아 내려고 노력했지만 적어도 퍼티는 입력 할 때 백 스페이스를 보냅니다 ctrl-backspace.
kurtm

3
ctrl + w는 단어를 효과적으로 삭제하지만 클립 보드에 복사하여 저장 한 내용을 지 웁니다 (또는 아래로 밉니까?).
Elijah Lynn

1
esc-

1
저것은 ... 인생이 바뀌고 있습니다. 나의 신.
wired00

27

이 작업을 수행 할 수도 있습니다 CtrlW.

다른 옵션은 고유 한 바로 가기를 설정하는 것이지만 사용중인 터미널 에뮬레이터에 따라 다릅니다. 의 경우 xtermrxvt다른 사람과 어쩌면,이 라인을 추가하려면 ~/.inputrc(존재하지 않는 경우 파일을 작성) :

## rxvt, xterm
"\b":backward-kill-word

gnome-terminal그리고 그 ilk는 AltBackspace기본적 으로 가지고있는 것처럼 보이지만 분명히readline() 얻으려면 패치해야합니다 CtrlBackspace.

참조 :


24

Alt+ Backspacebash와 zsh에서 나를 위해 일합니다.


2
iterm과 함께 작동하지 않습니다 :(
Akarsh Satija

5
예를 들어 Ctrl+WURL을 Alt+Backspace삭제 하고 사용 하면 전체 URL이 삭제되고 단어는 삭제되고 특수 문자가 발견되면 삭제가 중지됩니다.
Metafaniel

그리고 항상 당신은 ctrl-yyank / undo / paste을해야합니다.
Pablo A

이렇게하여 ITerm을 위해 그것을 해결 : github.com/fish-shell/fish-shell/issues/2124
Pascalius

-2

Mac에서는 다음을 사용할 수 있습니다.

Fn+Delete


2
커서 앞에있는 1 개의 문자가 아닌 1 개의 문자가 삭제됩니다.
Dannid

이것이 여전히 관련이 있는지는 모르지만 Mac에서는 <Alt> + <Backspace>입니다.
Hassan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.