Parametreleri olan eşlemeler oluşturmak mümkün müdür?


11

Bunun gibi birkaç eşleme oluşturduk:

: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>

hangi istendiği gibi çalışır.

Şu anda, eşlemelerimin belirgin yedek parçalarını kaldırmama izin verecek bir harita şablonu oluşturma olanağı arıyorum.

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

böylece herhangi bir değeri parametre olarak iletebilsin SomeFunc.

Böyle bir olasılık var mı?


7
Sen kullanabilir input()ya getchar(). Ancak, parametre alan bir şey için eşleme yerine bir komut kullanmak muhtemelen daha normaldir.
Peter Rincker

Peter'ın yorumuna katılıyorum; komutlar iş için eşleştirmelerden daha uygundur.
romainl

Yanıtlar:


6

@ Peter-rinckler'in dediği gibi, muhtemelen bir komutla yapmak daha kolaydır:

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

Yapmayı mümkün kılar (normal modda)

:Xyz ABC

Gerçekten sevmiyorum input()çünkü bu tür şeyleri kolayca tekrarlayamazsınız.


6

Peter Rincker'ın yorumu sayesinde, cevabı buldum:

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

İşte başka bir örnek: nnoremap <silent> <leader>tn :exe "tabn" nr2char(getchar())<cr> . Fikir, <leader>tn22. sekmeye
gitmek için yazmaktır

1

TextMate benzeri parçacıkları vim vermeyi amaçlayan SnipMate'e bir göz atmak isteyebilirsiniz . Zaten bana çok yardımcı oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.