Ctrl명령을 입력하고 있는데 뭔가를 확인해야 한다는 것을 기억합니다. +를 누르면 U명령이 사라지고 다른 것을 입력할 수 있지만 내가 입력한 명령이 기록에 없습니다.
명령을 복원할 수 있는 방법이 있습니까? 아니면 다른 단축키를 눌러 명령을 어딘가에 저장할 수 있습니까?
답변1
push-line
ZLE 명령을 살펴보십시오 . 이 명령은 라인의 현재 내용을 버퍼 스택에 푸시하고 라인을 지웁니다. 그런 다음 다른 명령을 입력할 수 있으며 ZLE가 다시 시작되면 라인이 버퍼 스택에서 라인 버퍼로 팝됩니다.
prompt@world$ cp abc /mnt/usr/bin # The user presses Esc-q
prompt@world$ # The line is cleared
prompt@world$ mount -v /dev/sdb1 /mnt # And the user can enter another command
mount: /dev/sdb1 mounted on /mnt
prompt@world$ cp abc /mnt/usr/bin
# The first command is popped off of the stack
# as soon as ZLE comes back.
기본적으로 이 명령은 / in emacs 모드에 바인딩됩니다 Alt. Escq이 명령을 사용하여 이 명령을 다른 키에 바인딩할 수 있습니다 bindkey
. 예 를 들어 Alt/ 에 Escv바인딩 하려면 .bindkey '^[V' push-line
zshrc
답변2
Ctrl+는 Y마지막으로 잘라낸 항목을 붙여넣습니다( Ctrl+ U, Ctrl+ K, Ctrl+ W등 사용).
답변3
당신이 찾고있는push-line
명령은 Ctrl+ Q및 기본적으로 에 바인딩됩니다 Esc Q. 이 명령을 사용하면 입력 내용이 지워지고 다른 명령을 입력할 수 있습니다. 이 명령이 실행되거나 취소되면 편집을 위해 이전 명령으로 돌아갑니다.
여러 줄 명령을 사용하면 push-line
현재 줄만 지우고 다른 줄은 입력 버퍼에 유지됩니다. 또 다른 명령이 있습니다push-input
전체 입력 버퍼를 지우고 기본적으로 어떤 키에도 바인딩되지 않습니다.
이 명령에는 래퍼를 사용합니다. Ctrl+를 입력하여 Z입력 중인 명령을 "일시 중지"하고 다른 명령을 입력합니다. 명령을 실행한 후(또는 Ctrl+ 로 중단 C) 보류 중인 명령이 편집을 위해 반환됩니다(커서 위치도 기억됩니다). 편의상 Ctrl+를 입력할 때 명령줄이 비어 있으면 Z해당 키가 bg
내장 명령을 호출합니다. 따라서 Ctrl+를 두 번 누르면 Z실행 중인 명령이 백그라운드로 직접 전송됩니다.
fancy-ctrl-z () {
emulate -LR zsh
if [[ $#BUFFER -eq 0 ]]; then
bg
zle redisplay
else
zle push-input
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
#
모든 셸에서 작동하는 간단한 방법은 현재 줄의 시작 부분에 를 추가하고 를 누르는 것입니다 Enter.