내 tcsh 쉘에서 vi 키 바인딩을 사용합니다.
이제 어떤 모드가 ( insert
모드 또는 command
모드) 에 있는지 알지 못하여 많은 좌절을 초래합니다.
누구나 셸에서 현재 vi 모드를 표시하는 방법을 알고 있습니까? (프롬프트 또는 다른 것을 포함하여)
내 tcsh 쉘에서 vi 키 바인딩을 사용합니다.
이제 어떤 모드가 ( insert
모드 또는 command
모드) 에 있는지 알지 못하여 많은 좌절을 초래합니다.
누구나 셸에서 현재 vi 모드를 표시하는 방법을 알고 있습니까? (프롬프트 또는 다른 것을 포함하여)
답변:
어떤 모드를 시각적으로 결정할 수있는 방법이 없다고 생각하지만 행동을 약간 수정하면 문제가되지 않습니다.
명령 모드를 사용하려면 명령을 입력하기 전에 ESC를 누르십시오.
삽입 모드에 들어가려면 내용을 입력하기 전에 ESC와 i를 누르십시오.
ESC를 많이 누르게 되겠지만, 내가 만난 모든 vi 사용자는 어쨌든 그렇게합니다.
설명서를 살펴본 결과 현재 vi 모드를 감지하고 표시하는 방법을 찾을 수 없다고 말해야했습니다. 나는 당신이 즐거운 놀라움을 원하고 누군가가 해결책을 제시하기를 바랍니다.
나는 이것을 할 수있는 방법이 있다고 생각하지만, 작은 성가심 때문에 엄청난 과잉이며, 나는 이것이 당신 이이 질문을 제기했을 때 염두에두고 있다고 생각하지 않습니다. 이것이 사실이라면 지금 읽기를 중단하고 인생을 즐기십시오.
OTOH, 이것이 정말로 당신의 애완 동물 친구이고 그것이 당신을 미치게 만들고 있다면, 당신은 정말로이 문제를 헤치고 싶을 것입니다.
간단히 말해서, Unix는 터미널 I / O를 장치 드라이버와 사용자 프로세스 사이의 전이중 I / O 스트림으로 구현하여 모듈을 삽입 할 수 있습니다. 스택으로 구성되므로 원하는만큼 스트림을 계층화 할 수 있습니다. 주입 된 스트림의 합은 터미널 I / O 동작을 만듭니다.
문자를 입력하면 첫 번째 모듈에서 해당 문자를 검사하여 전달합니다 (원하는 경우). 응답이 반대 방향으로 도착하면 다시 검사하여 전달할 기회를 얻습니다. 이것이 Ctrl-C가 일반 문자 키보다 높은 수준에서 처리되는 방식입니다.
스트림 모듈을 구현하는 이진 파일을 만들 수 있습니다.이 모듈을 호출하면 포 그라운드에서 자동으로 실행되어 모든 키 입력을 검사하고 전달하여 원하는 키 입력에 대해 원하는 작업을 수행합니다. 모든 의도와 목적을 위해 마치 쉘에서 작업하는 것처럼 나타납니다. 우우 이 바이너리는 .tcshrc의 마지막 (또는 첫 번째 또는 다른) 줄에서 호출 할 수 있으며 거기에 있는지조차 알 수 없습니다.
이 좋은 입문서이다 여기에 ,하지만 난 그것의 주요한 과거의 아마 때문에,이 주제에 많이 찾을 수 없습니다.
이 정확한 문제가있는 사람 (예 : 나 자신) : stackoverflow 에서 해결책을 찾았습니다 . 분명히 readline에서 이것에 대한 기본 지원이 있으므로 다음을 추가 할 수 있습니다 ~/.inputrc
.
set show-mode-in-prompt on
실제 캐릭터 사용을 사용자 정의하려면 다음을 수행하십시오.
set vi-ins-mode-string "custom-ins"
set vi-cmd-mode-string "custom-cmd"
가장 일반적으로 사용되는 두 개의 텍스트 편집기 인 Emacs와 vi를 기반으로 명령 행을 편집하기위한 두 가지 기본 모드가 있습니다 .vi 바인딩을 사용하면 삽입 모드 와 명령 모드를 전환해야 합니다.
각 모드마다 다른 명령이 유용합니다.vi 모드에는 삽입 모드와 명령 모드의두 가지 하위 모드가있습니다.
- 기본 모드는 insert 입니다.
- 를 눌러 모드 간을 전환 할 수 있습니다
Esc
.- 또는 명령 모드에서
'a'(추가) 또는 'i'(삽입)를 입력 하면 삽입 모드로 돌아갑니다 .
이미 링크 된 tcsh
사용자 정의 페이지 에 대한 추가 정보