2012-09-19 4 views
1

삽입 모드에서 단일 명령을 실행하고 Ctrl-O를 사용하여 삽입 모드로 돌아갈 수 있음을 발견했습니다.삽입 모드에서 명령을 실행하는 것과 비교하여 일반 모드로 단어 삽입

일반 모드에서 한 단어를 삽입 할 가능성은 어떻게됩니까?

물론 삽입 모드로 전환하고 단어를 쓰고 탈출하고 정상 모드로 돌아갈 수 있습니다.

그러나 정상 모드를 벗어나지 않고 시퀀스를 매핑하여 (예 : Ctrl-K) 커서 위치에 하나의 단어를 빠르게 추가 할 수 있는지 궁금한가요? (- 잉고 Karkat의 대답 - 참조 question 11567596 및 익명 팁 1616)

가 나는 프롬프트 기능을 매핑 시도했지만 실패라는 단어가이 간단한

답변

1

... 줄의 끝에 추가되었다 함수는 다음과 같이 작동합니다.

function! InsertWord() 
    let l:user_word = input("Type something then hit ENTER: ") 
    execute "normal i".l:user_word 
endfunction 

command! InsertWord call InsertWord() 

nnoremap <C-k> :InsertWord<CR> 

모든 것이 한 줄로 단축 될 수는 있지만, 나는 그렇게 좋아합니다.

+0

완벽하게 작동합니다. 많은 감사합니다. – ThG

2

가장 좋은 조언은 삽입 모드를 채택하는 것입니다. 그것은 vi 방식TM입니다.

진지하게도 나는 단어/문장/무엇이든 입력 할 수있는 매핑을 작성한 다음 자동으로 일반 모드로 돌아갑니다. 하지만 ...

  1. 당신은 input()이 romainl의 대답, 또는 (A CursorMovedI 후크 예를 들어) 더 정교한 접근 방식에서, 당신은 당신이 완료 나타 내기 위해 또는 다른 Enter 키를 눌러야 사용 여부 . Esc을 눌러 삽입 모드를 정상적으로 유지하는 것보다 낫지 않습니다!

  2. 귀사는 귀중한 (짧은) 키 시퀀스를 사용하고, 두 접근법을 결정하기 위해 뇌 사이클을 소비해야하며, 근육 기억은 텍스트를 입력하는 방법을 배우는 것이어야하며, 이러한 스페셜은 없습니다 다른 vi 모드에서 사용할 수 없습니다 (예 : Bash).

그래서 나는 그럴 가치가 없다고 생각합니다.

+0

나는 이것을 훈련 훈련으로 생각했다. 사실 너와 잘 어울린다. – romainl

+0

@Ingo Karkat : 물론 두 분 모두 맞다는 것을 알고 있습니다. (그리고 나는 이것이 "그로킹 바이"가 아니라는 희망이 있습니다 ...). 하지만 1) 나는 개념의 증명으로 시험해보고 싶었다. (적절한 용어가되기를 바란다.) 2) 안드로이드에서 VimTouch를 사용하기 시작했다. (Galaxy Nexus with JB) 그리고 정상에서 모드는 비좁은 화면에서 환영받습니다. 3) 일반 텍스트 만 작성하고 내 텍스트를 미세하게 트리밍하기 위해 일반 모드의 의도대로 사용합니다. 따라서 귀하의 답변은 현명하고 도움이되었습니다. – ThG

관련 문제