명령줄에 명령을 입력할 때 gitp ush
또는 같은 문자가 혼동되는 경우가 종종 있습니다 c d-
. 위를 클릭하여 해당 줄을 표시한 다음 몇 개의 키를 눌러 문제가 되는 문자를 바꿀 수 있기를 원합니다. 물론 문자 중 하나를 삭제하고 다시 입력할 수도 있지만 가능하면 이러한 오류를 덜 짜증나게 만드는 것이 좋을 것입니다.
터미널에 명령을 입력할 때 두 문자를 바꾸는 방법이 있습니까?
저는 주로 우분투에서 GUI 터미널 애플리케이션을 사용하는데, 쉘이 어떻게 실행되는지와는 전혀 상관없는 답변이 있지 않을까 하는 생각도 들었습니다.
답변1
쉘에서 Vi 편집 모드를 사용하는 경우 xp
일반 모드("명령 모드", 즉 를 누른 후)에서 Esc입력하기만 하면 두 문자를 쉽게 바꿀 수 있습니다 . 이는 말 그대로 "커서 아래의 문자를 지운 다음" "이전에 가져온 텍스트(삭제된 문자)를 커서 뒤에 붙여넣기"를 의미합니다.
이것은 모든 sh
쉘에 적용됩니다.Vi 모드는 POSIX 표준에 설명되어 있습니다..
Emacs 편집 모드에서는 동일한 작업이 종종 Ctrl+T( T
"전치")에 바인딩됩니다.
아니요완전히이를 수행하는 쉘 독립적인 방법입니다. 위의 코드는 bash
, ksh93
및 에서 작동 zsh
하지만 Emacs 명령줄 편집 모드는 POSIX 표준과 같은 표준이 아닙니다.
위에 링크된 페이지의 근거 섹션은 다음과 같습니다.
초기 제안에는 KornShell에서 파생된 emacs 명령줄 편집 모드가 포함되었지만 emacs 편집기 자체는 포함되지 않았습니다. emacs 지지자 커뮤니티는 이 매우 강력한 환경을 표준화하려는 시도가 공급업체가 커뮤니티에서 요구하는 확장성이 부족한 엄격하게 일관된 버전을 출시하도록 장려할 것을 두려워하기 때문에 전체 emacs 편집기를 표준화해서는 안 된다고 주장합니다. 원래 emacs 프로그램의 작성자도 이 프로그램을 생략하고 싶다고 밝혔습니다. 또한 역사적으로 emacs를 포함하지 않거나 이를 포함했지만 지원하지 않는 시스템이 많았지만 vi를 포함하지 않고 지원하지 않는 시스템은 거의 없었습니다. KornShell 버전과 GNU 시스템과 함께 배포되는 편집기 사이에 약간의 차이가 있다는 것이 명백해졌기 때문에 쉘 emacs 명령줄 편집 모드는 결국 생략되었습니다.emacs 작성자는 POSIX emacs 모드를 제거하거나 지정되지 않은 조건이 많이 있도록 요청했습니다.KornShell 작성자는 쉘의 일관성을 유지하기 위해 변경 사항을 고려하는 데 동의했지만 표준 개발자는 당시 사양을 연기하기로 결정했습니다.당시에는 후속 초안이 수용 가능한 정의에 대한 합의로 이어질 것이라고 생각되었지만, 이는 일어나지 않았으며 그렇게 할 인센티브도 없는 것으로 보입니다.어떤 경우든 사용자에게 가장 친숙한 편집기의 정확한 모델을 기반으로 추가 명령줄 편집 모드를 자유롭게 제공할 수 있습니다.