매개 변수를 사용하여 맵핑을 작성할 수 있습니까?


11

다음과 같은 몇 가지 매핑을 만들었습니다.

:nnoremap <buffer> <leader>xyzABC   :call SomeFunc('ABC')<CR>
:nnoremap <buffer> <leader>xyzDE    :call SomeFunc('DE')<CR>
:nnoremap <buffer> <leader>xyzFoo18 :call SomeFunc('Foo18')<CR>
:nnoremap <buffer> <leader>xyzBar22 :call SomeFunc('Bar22')<CR>

원하는대로 작동합니다.

이제 매핑의 명백한 중복 부분을 제거 할 수있는 맵 템플릿을 만들 가능성을 찾고 있습니다.

:nnoremap <buffer> <leader> xyz? :call SomeFunc(?)<CR>

매개 변수로 모든 값을 전달할 수 SomeFunc있습니다.

그런 가능성이 있습니까?


7
당신은 사용할 수 있습니다 input()또는 getchar(). 그러나 매개 변수를 사용하는 항목에 대한 매핑 대신 명령을 사용하는 것이 더 일반적 일 수 있습니다.
Peter Rincker

나는 Peter의 의견에 동의한다. 명령은 매핑보다 작업에 더 적합합니다.
romainl

답변:


6

@ peter-rinckler가 말했듯이 아마도 명령을 사용하는 것이 더 쉽습니다.

command! -nargs=* Xyz :call SomeFunc(<q-args>)

(정상 모드에서) 가능

:Xyz ABC

나는 input()그런 종류의 것들을 쉽게 반복 할 수 없기 때문에 정말 좋아하지 않습니다.


6

Peter Rincker의 의견 덕분에 답을 찾았습니다.

:nnoremap <buffer> <leader> xyz :call SomeFunc(input('Param: '))<CR>

또 다른 예는 다음과 같습니다 nnoremap <silent> <leader>tn :exe "tabn" nr2char(getchar())<cr> .. 아이디어는 입력 <leader>tn2하여 탭 2로 이동하는 것입니다.
Jasha

1

TextMate와 같은 스 니펫을 vim에 제공하는 것을 목표로하는 SnipMate를 살펴볼 수 있습니다 . 어쨌든 그것은 매우 도움이되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.