화살표 키를 사용하지 않고 이전 명령을 반복하는 방법은 무엇입니까?

화살표 키를 사용하지 않고 이전 명령을 반복하는 방법은 무엇입니까?

이전 명령을 반복하는 데 사용할 수 있다는 것을 알고 있습니다 Up. 달리다마지막명령에는 Up+ 만 포함됩니다 Enter. 그런데 원래 사고 싶었던 건해피 해커 키보드왜냐하면 나는 에서 많은 시간을 보내기 때문이다 vim.

이 키보드에는 화살표 키가 없으며 이 동작을 수행하는 방법을 아는 유일한 방법은 Ctrl+를 누르고 R이전 명령을 반복하기 시작하는 것입니다.

Up화살표 키를 사용하지 않고 UNIX 터미널에서 +를 시뮬레이션하는 쉬운 방법이 있습니까 ?Enter

답변1

히스토리 교체( , , )와 같은 것을 구현하는 쉘을 csh사용 하십시오 .cshtcshbashzsh

!!

그 다음에 Enter.


또는또는:

!-1

그 다음에 Enter.


또는 Ctrl+ P,Enter


마법의 공간

또한 실행하기 전까지는 !!및 은 자동으로 확장되지 않습니다 !-1(이 시점에서는 너무 늦을 수 있음).

를 사용하는 경우 명령을 입력한 후 누르면 자동으로 인라인으로 확장되므로 실행하기 전에 검사할 수 있습니다 bash. 이는 얼마 전에 실행된 명령의 기록 확장에 특히 유용합니다. 예를 들어 로 시작하는 마지막 명령은 pulled 입니다 . Magic Space를 사용하면 명령을 실행하기 전에 미리 볼 수 있습니다.bind Space:magic-space~/.bashrcSpace!echoecho

bindkey ' ' magic-spacetcsh이는 또는 의 역할 과 동일합니다 zsh.

답변2

명령줄 편집 기능이 있는 대부분의 쉘은 Emacs 키 바인딩을 지원합니다. (아주 작은 부분 집합)

Up     Ctrl+P
Down   Ctrl+N
Left   Ctrl+B
Right  Ctrl+F
Home   Ctrl+A
End    Ctrl+E
Delete Ctrl+D

set -o vi또는 vi 명령을 사용하여 쉘 시작 파일(예:)에 추가하여 쉘을 편집 모드로 설정할 수 있습니다 ~/.bashrc. 예를 들어, 다음을 수행할 수 있습니다.

  • EsckEnter 이전 명령을 다시 실행하는 데 사용됩니다 ( 와 동일 !!). 빼기 키는 -"위로 이동" 명령으로도 작동합니다.
  • 처음 12개 명령을 다시 실행하려면 EsckkkkkkkkkkkkEnter 또는 를 사용하십시오 ( 와 동일 ).Esc12kEnter!-12
  • Esc및 동작 명령을 사용하고 (즉, k적절하게 반복), 그런 다음편집하다거기에서 찾을 수 있는 bash 명령줄. 여전히 명령 모드에 있으므로 실제로 명령을 기록에 추가하려면 편집 명령(예: , , 또는 해당 소문자 중 하나)을 vi사용해야 합니다 . 예를 들어 와 같습니다 .viIACR
    EsckisudoSpaceEntersudo !!
  • 고급 사용자의 경우: 복사할 수도 있습니다(와이ank) 텍스트 한 줄을 입력하고 붙여넣습니다(ut) 다른 것 위에 놓으면 !-2:- !$. (안타깝게도 명명된 버퍼를 지원하지 않는 것 같습니다.)

답변3

내가 가장 좋아하는 것은 CTRL+ P다음 CTRL+O

기본적으로 추가 구성이 필요하지 않습니다. ^P는 마지막 명령으로 전환하고, ^O는 현재 줄을 실행하게 합니다.

CTRL+ 는 O필요에 따라 여러 번 사용할 수 있습니다.

답변4

구현하는 POSIX 쉘을 사용하십시오.사용자 이식성옵션( ksh, zsh, bash, 포함)이 있는 경우 다음 명령을 yash사용할 수도 있습니다 .fc

fc -e : -1

예를 살펴보세요:

$ echo "hello"
hello

$ fc -e : -1
echo "hello"
hello

자세한 내용은기록에서 일련의 명령을 실행합니다.조나단 레플러(Jonathan Leffler)의 답변입니다.

관련 정보