パラメータを使用してマッピングを作成することは可能ですか?


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、2015

ピーターのコメントに同意します。コマンドは、マッピングよりもジョブに適しています。
romainl 2015

回答:


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.