Bash와 동등한 Windows 셸 이스케이프 키 (전체 줄 삭제)


13

Windows 명령 줄 (powershell 및 cmd)에서 Esc줄에있는 동안 키 를 누르면 프롬프트에 입력 한 내용이 모두 제거됩니다.

Escbash 프롬프트에서 키 를 눌러도 아무런 효과가 없다는 것을 알았습니다 . 누르면 Esc다음과 것은 backspace단어를 삭제하지만, 이것은 각 단어에 대한 작업을 수행 할 수 있습니다.

나는 배쉬를 점차적으로 배우고 때로는 때로는 중간에 바보 같은 것을 입력하고 처음부터 다시 입력하는 것이 낫다고 생각합니다. 이렇게하려면 누르는 backspace것이 지금까지 내가 찾은 유일한 방법입니다.

너 뭐하니?

clear명령과 Ctrl-L바로 가기를 알고 있지만 전체 터미널을 지우는 것에 대해서는 이야기하지 않습니다. 그냥 라인.


1
얼마 전 저는 수퍼 유저에게 유용한 readline 키보드 단축키 목록을 게시했습니다 . 그것들도 유용 할 수 있습니다. (Readline은 bash가 라인 편집에 사용하는 라이브러리입니다.)
jw013

jw013 님, 멋진 편집 감사합니다. :-)
Animesh

답변:


15

당신은 원 kill-whole-line하지만 이것은 bash에서 기본적으로 바인딩되지 않습니다. backward-kill-line( CtrlX Backspace) 및 unix-line-discard( CtrlU)는 모두 현재 지점에서 줄 시작으로 지워 지므로 줄 끝으로 이동하여 둘 중 하나를 사용하십시오.


당신은 맞습니다, 그것은 아무것도 묶이지 않습니다. 방금 사용하여 알았습니다 bind -P. 그런 Ctrl-U다음 Ctrl-Y유일한 옵션입니다.
Animesh

많은 기본 바인딩이 Emacs 편집기의 키 시퀀스에서 파생되었으며 해당 바인딩도 다른 곳에 표시됩니다.
Blrfl

@Blrfl은 주석을 확장하기 위해 이러한 키 바인딩의 대부분을 많은 명령 줄 프로그램이 사용 하는 readline 라이브러리 로 추상화 했기 때문에 유사한 행 편집 키가 있습니다.
jw013


6

Ctrl+a줄의 시작으로 이동하고 줄 Ctrl+k의 끝으로 삭제


시도 ^U는 이미 전체 라인을 삭제 대부분의 이맥스 명령 행 편집 모드 구현에 먼저. 커서에서 왼쪽 만 삭제하는 경우 (예 : GNU 판독 선) ^K나중에 누릅니다 .
mirabilos

3

Ignacio Vazquez-Abrams의 답변을 약간 확장하려면 다음 명령으로 to 를 Esc바인딩하여 bash 의 키에서 거의 (거의) Windows와 같은 동작을 얻을 수 있습니다kill-whole-lineEsc

bind '"\e":kill-whole-line'

~/.inputrc파일에 행을 추가하면 세션간에 바인딩이 지속됩니다.

그러나 bash는 실제로 다른 비 지속적 Alt 또는 Ctrl과 같은 키를 다른 수정 키로 사용하기 때문에 이것은 매우 비표준 Esc입니다. 기존 키 바인딩 목록 (을 사용하여 bind -P)을 보면 "\ e"로 시작하는 키 조합에 바인딩 된 여러 명령이 표시 될 수 있습니다 (예 :

"\eb": backward-word

조합 위로하는 세트 Esc+ B커서 뒤로 이동하려면 가장 최근의 단어 - 시작 - 오히려처럼 Ctrl+ , 당신은 방출 유지해야한다는 점을 제외 Esc(뿐만 아니라 B, 물론) 당신이 행에 한 번 이상을 수행하려는 경우 ).

그리고 이것이 내가 얻는 행동이 거의 Windows와 같다고 말한 이유를 설명합니다 .을 누르면 Escbash는 다른 키와 함께 사용하는지 확인합니다. 따라서에 바인딩하면 눌림 kill-whole-line(또는 해제) Esc과 bash가 줄을 지울 때 까지 약간의 지연이 있습니다.

그러나 그중 하나라도 신경 쓰지 않고 다른 키 입력으로 자신을 재교육하는 것보다 지연으로 살고 싶다면 그렇게 할 수 있습니다.

(참고 : 이 답변 의 내용을 읽고 링크를 통해 얻은 결과 대부분의 정보 입니다.)


1
이것은 매우 도움이되었고 감사하며 광고 한대로 작동합니다. 그러나 줄 끝에서 DEL을 누르는 것과 같이 다른 명령이 "유효 하지 않게 "실행될 때 성가신 행동을 발견했습니다 . 이는 줄을 지우고 [19;비슷한 탈출 코드로 대체합니다 . 결국 나는 매핑 발견 "\e\e"kill-whole-line(즉, 탭 Esc 키를 두 번을 취소하십시오) 멋진 타협.
j_random_hacker

@j_random_hacker : 흠. Esc어쨌든 나는 종종 몇 번 때렸 으므로 시도해 볼 수 있습니다. 나는 현재 Ctrl+에 묶여 Del있지만 결코 기억하지 못한다.
Wilson F
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.