Bash : 단어를 뒤로 삭제하도록 Ctrl-Backspace를 설정할 수 있습니까?


19

쉘 (bash)에있을 때-Ctrl-Backspace를 바인딩하여 "단어 삭제"를 원합니다. 가능합니까?

편집 :

konsoleKDE에서 터미널을 사용 하고 있습니다.


2
문제는 간단하지만 그것에 대해 불평하지 않습니다. 필자는 실제로 많은 이익을 얻지 않고 외부 시스템에서 동작을 보지 않는 확실성을 위해 사용자 정의하는 대신 많은 응용 프로그램에 이미 존재하는 "표준"키 바인딩을 용이하게하는 것이 종종 가치가 있다고 말합니다. Ctrl+wimho에 익숙해 져야합니다.
Daniel Andersson

@ Daniel Andersson : 또는 대안으로- 설정을 외부 컴퓨터 로 전송 하는 방법을 개발할 수 있습니다 .
Adobe

도트 파일 공유는 해결 된 문제이지만, 상당히 개방 된 권한이있는 로컬 컴퓨터가 아닌 다른 컴퓨터에서는 그다지 도움이되지 않습니다. 외국 시스템을 사용하는 경우 같은 시스템을 재구성 할 자유가 없을 것입니다. 또한 모든 새로운 응용 프로그램에는 특별한 치료가 필요합니다.
Daniel Andersson

6
나는 역의 문제를 겪었고 Ctrl-w콘솔에서 "이전 단어 삭제"로 익숙 했으며 Eclipse 또는 Chrome에서도 본능적으로 수행하여 탭 닫기 / 현재 파일 닫기를 의미합니다. 꽤 짜증나.
Ezequiel Muns

1
Chrome SShInATab과 동일한 문제가 있습니다. ctrl-W없이 ctrl-W를 어떻게합니까? :)
Riccardo SCE

답변:


11

대부분의 터미널에 이미 매핑 된 Alt+ Backspace또는 Ctrl+ 만 사용하는 것이 어떻습니까? W콘솔에 대해 확실하지 않습니다. Xmodmap (man xmodmap)을 사용하여 다른 사용자 정의 키도 다시 매핑 할 수 있습니다. 역설적으로, xmodmap은 터미널이 매핑을 무시하기 때문에 백 스페이스를 다시 매핑 할 수 없지만 대부분의 키와 잘 작동합니다 ...


9
Emacs에서 Ctrl-Backspace를 사용했기 때문입니다. 나는 Ctrl-w에 대해 알고 있었다. Alt-Backspace가 처음입니다 (+1).
Adobe

1
좋은 지적입니다, @hellork. X 서버에서 xmodmap을 통해 control + backspace를 가로 채서 사용하지 않는 문자 (예 : alt-backspace)에 매핑 할 수 있습니다.

4
이것에 대한 성가신 것은 ctrl + backspace가 대부분의 주요 운영 체제에서 대부분의 GUI 응용 프로그램에서 "뒤로 단어 삭제"에 대한 일반적인 매핑이라는 것입니다. 마찬가지로 Ctrl + W는 "창 닫기"에 널리 퍼져 있습니다. Alt + w는 GUI의 모든 것에 거의 사용되지 않습니다. 표준화는 좋을 것입니다. 더 큰 혼란, 터미널 변경 또는 GUI 변경이 무엇인지 궁금합니다.
naught101

1
@naught, Control-W는 이미 유닉스 터미널의 기본 단어 지우기 키입니다. 예, Windows / GUI 컨벤션과 충돌하지만 실제로는 몇 년 전부터 시작되었습니다. Microsoft를 비난하십시오!
Alexis

11

구글을 통해이 스레드를 찾았지만 대답은 듣고 싶지 않았습니다. 그래서 나는 놀았습니다 :

내 터미널에서 일반 백 스페이스는을 보내고 ^Hctrl + backspace는을 보냅니다 ^?. 따라서 ^?단어를 삭제하기 위해 리 바인딩하는 것이 간단해야합니다. 기본적으로 Ctrl + W를 통해 사용할 수 있습니다.

먼저 (실패 시도) :

$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".

따라서 이것은 작동해야합니다.

$ bind '"\C-?":unix-word-rubout'

그러나 설명 할 수있는 사람은 없습니까?

두 번째 (성공) 시도 :

$ bind '"\C-?":"^W"'

(가) 여기서 ^W리터 / 원료 인 ^W(프레스 CTRL + V 다음 Ctrl + W가 보이게하기 위해).


당신의 첫 번째 해결책은 실제로 나를 위해 일했습니다! 둘째는 그렇지 않았다.
Drew Hoskins

두 번째 시도는 Ctrl-Backspace가 아닌 backspace 자체를 대체하는 것 같습니다.
user541686

7

다음을 포함하도록 편집하십시오 ~/.inputrc(하나를 작성하거나 복사해야 할 수도 /etc/inputrc있음).

# Ctrl-Delete: delete next word
"\e[3;5~": shell-kill-word

# Ctrl-Backspace
"\C-H": shell-backward-kill-word

커서 옆에있는 단어를 삭제하기 위해 Ctrl+ 도 매핑됩니다 Delete.


나를 위해 작동하지 않습니다.
Jonathan

6

이 좋은 답은 여기에 있습니다, 그러나 나는 그때부터 매핑을 추가, 설정 -> 편집 현재 프로파일 -> 키보드 -> 편집과 Konsole을 그것을 해결 Backspace+Control\x17. (을 사용하여 Ctrl-w의 ASCII 코드를 찾았습니다 showkey --ascii.)


로 문제를 지적 해 주셔서 감사합니다 showkey. 따라서 ALT+D커서 앞에있는 단어를 삭제 하면에 해당한다는 것을 알았 습니다 \x1b\x64.
loki

고마워, 내 문제를 해결했다. 필자의 경우 Alt + Backspace를 다시 매핑해야하며 시퀀스는 \x1b\x7f입니다.
DDMC 2016 년

3

그것은 bash가 보는 것에 달려 있습니다. 정기적 인 터미널 상호 작용에서 bash는 누른 키 수정자를 보지 않고 결과 문자 만 표시합니다. 백 스페이스는 예를 들어 control-H와 이미 동일합니다. 시프트 또는 컨트롤을 누르고 있으면 아무런 차이가 없습니다.

그러나 터미널 응용 프로그램 (xterm? cmd? 터미널? Putty? 운영 체제에 따라 다름)은 키 누르기를 볼 수 있으며 제어 백 스페이스 키 조합을 배쉬가 백 스페이스와 구별 할 수있는 것으로 매핑 할 수 있습니다.


내 배쉬에 백 스페이스가 보이지 않는다는 것을 알았습니다. 그러나 그것을 볼 수 있습니다.
Adobe

@adobe, 무슨 뜻인가요? 터미널에 'stty'를 입력 한 후 매뉴얼을 읽으십시오. ^ H가 지우기 문자로 설정되어 있다면, 정당한 이유가 있다면 다른 것으로 설정할 수 있습니다.

1
github.com/calj/gtconf/blob/master/zsh/zshrc 에서 이를 수행하는 좋은 예가 있습니다. Konsole을 사용하면 가능합니다. * .keytab 파일 중 하나를 / usr / share / kde4 / apps / konsole /에서 ~ / .kde / share / apps / konsole로 복사하고 위의 링크에있는 제안으로 "key Backspace"행을 삭제하고 추가 : key Backspace-Shift-Control : "\x7f"key Backspace-Shift+Control : "\E[9;3~"제목 줄을 변경하는 동안 keyboard "Xfree4 Modlist"예를 들어 제목 줄을 변경하십시오 . 그런 다음 "\e[9;3~": backward-kill-word"~ / .inputrc에 추가 할 수 있습니다
Adam

2

이 시도:

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

선택적으로 ~ / .inputrc에 다음을 추가하여 영구적으로 만듭니다.

"\C-_": backward-kill-word

쿠분투 14.04의 bash 4.3.11에서 작동


2
Control-backspace는 Control-underscore와 같지 않을 것입니다.
Thomas Dickey

1
이 스레드에서 시도한 모든 것 중에서 이것이 효과가있었습니다! 사용 "GNU bash는 버전 4.3.48 (1) -release (x86_64에-PC-리눅스 GNU)"창 / WSL에 떠들썩한 파티에
마커스 Jevring

이것은 cygwin에서을 사용하여 나에게 효과적 GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)입니다.
zagyi

1

Konsole에서 :

  • 딸깍 하는 소리 Settings -> Edit current profile
  • '키보드'탭을 클릭하십시오-> [Edit...]
  • 클릭 [Add]버튼과 아래 Key Combination열 유형을 Backspace+Ctrl. 에서 Output열 타입 0x08(종래의 백 스페이스 문자)

이제 키를 backward-kill-word통해

# ~/.bashrc

bind '"\x08":backward-kill-word'

감사. 적어도 xfce4 터미널에서 작동합니다.
limon

0

대부분의 터미널에서 CTRL + W는 이미 단어를 뒤로 삭제해야합니다. 이것은 xterm과 함께 작동하며 konsole과 함께 작동하는 것 같습니다. CTRL + W는 텍스트 기반 프로그램의 표준 키 바인딩으로 삽입 모드, emacs 및 모든 쉘에서 vim과 함께 작동합니다.


5
Ctrl-w를 Emacs, FireFox, Krusader의 "탭 닫기"에 바인딩했습니다. 따라서 Konsole에서도 탭 닫기 조합으로 설정했습니다.
Adobe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.