Bash의 여러 줄 명령에서 이전 줄을 어떻게 편집합니까? GNOME 터미널을 사용하는

Bash에서 여러 행에 걸쳐있는 명령을 입력 할 때 이전 행을 어떻게 편집합니까? 저는 GNOME 터미널을 사용하는 Linux Mint (Lisa) 사용자입니다.

예를 들어, 다음과 같이 입력합니다.

$ echo "foo bar
> baz
>

그리고 나서 명령의 세 번째 줄을 입력하려고 할 때 “foo”와 “bar”를 별도의 줄에 넣고 싶다는 것을 갑자기 깨닫게됩니다. 어떻게하면 “foo”와 “bar”사이에서 커서를 다른 위치로 옮겨서 Enter 키를 누를 수 있고 별도의 줄에 넣을 수 있습니까?

(당신이 생각하는 것처럼 쉽지 않습니다. 위쪽 화살표는 작동하지 않으며 Ctrl-P도 않습니다. 그래서 게시하기 전에 시도하십시오! 감사합니다!)



답변

불행히도, 그것은 최대입니다. bash, 아니 터미널에. 선택할 수있는 옵션은 다음과 같습니다.

  1. 줄 바꿈 대신 세미콜론을 사용하십시오. 단 한 번에 한 줄 위로 이동할 수는 없지만 문자 또는 단어 이동 명령을 사용해야합니다. (이상하게도, zsh 적어도 히스토리 편집시 복합 명령 내에서 이동할 수 있습니다. 흐름 명령.) 때때로 fc (이전 명령으로 편집기로 사용자를 안내 함)는 복합 명령을 처리하는 가장 쉬운 방법입니다.

  2. Bash를 사용하는 경우 다음 키 조합을 사용하십시오.

    ctrl x e
    

    텍스트 편집기를 사용하여 작업중인 명령이 열립니다. 파일을 저장하고 종료하십시오. (나는 그 명령을 Shell Hater의 프리젠 테이션 .)
    Zsh 사용자는 이 대안 .


답변

해결 방법은 여러 줄이 올 때까지 명령을 입력하지 않으려면 다음과 같이 입력하십시오. Ctrl V Ctrl j 다음 줄로 가고 싶을 때. 메타 돌아가는 말.

@ rici의 신용 대답


답변

충분히 재미있게, Ctrl + C 당신이 찾고있는 것입니다.

너가에있을 때

$ echo "foo bar
> baz
>

그냥 눌러 Ctrl + C (편집 된 명령 줄이 일시 중단됩니다) 쪽으로 (이전 기록). 귀하의 메시지는 다음과 같습니다 : (& gt;

$ echo "foo bar
baz

이제 당신은 왼쪽 권리 심지어 선 점프를 통해.

하나의 변종 만 있습니다. 다른 행을 추가하려면 마지막 문자에 있어야합니다. 따라서 기존 행을 편집하려면 이동하십시오 ( Ctrl + A ) 언론 들어가다 그걸로 충분하거나 끝나면 ( Ctrl + E )를 사용하여 줄을 추가하십시오. 들어가다 . 또 다른 단점은 Ctrl + _ (실행 취소)는 마지막 변경 사항 만 복원합니다. Ctrl + C