2014-09-11 1 views
2

어딘가에 물어볼 것이 확실하지만 내 인생에서 찾을 수는 없으며 Vim 문서의 Defining command-line commands 섹션에 없습니다. .Vim : 사용자 정의 명령에서 정상 모드 명령을 실행하십시오.

현재 단어 앞에 foo 단어를 삽입 할 사용자 정의 명령을 생성하려고합니다.

(참고 : 나는 을 기억하는 나 자신을 신뢰하지 않기 때문에이 기능을되고 싶어 아직 내가 noremap와 함께 할 방법을 알고 다른 바로 가기 키 ....가)에서

.vimrc 내가 추가

command AddFoo bifoo<esc>w 

을하지만 :AddFoo를 입력 할 때 내가 Not an editor command: bifoow를 얻을.

정상 모드 명령을 내리는 기능을 사용할 수 있습니까?

command AddFoo normal bifoo<esc>w 

답변

4

:normal 예 명령은 임의의 일반 모드 명령을 실행 할 수 있습니다 :

0

당신은 당신의 변경을 일반 모드로 전환 할 필요가, 당신이 원하는 것을 얻을 단순해야한다.

command AddFoo normal! bifoo<esc>w 

식 등을 넣으려면 :execute을 사용해야합니다. 난 그냥 :help key-notation의 사용과 다시 예를 보여 드리겠습니다 : :normal!은 (:map 대) :noremap처럼, 사용자 정의 매핑의 사용을 금지

command AddFoo execute "normal! bifoo\<esc>w" 

.

1

명령과 기능이 다른지 확인하십시오.

명령 정의의 오른쪽이 있어야하는데 적어도write 또는 bnext처럼 하나의 예 명령 :

command! Foo update | tabnext 

당신은 함수를 호출 할 수 있습니다

command! Bar call Bar() 

또는 실행 일반 모드 매크로 :

command! Baz normal ciw"<C-r>"" 

:help :normal을 참조하십시오.

관련 문제