「通常の」コマンドの式で変数を使用する方法は?


13

normal!vimscriptで何かを実行するときに変数を使用するにはどうすればよいですか?

例:

function! MyFunction(someArg)
   normal! (a:someArg)l
endfunction

これにより、カーソルsomeArgステップが右に移動します。


4
使用する必要がありますexe "norm!" variable
クリスチャンブラバンド

回答:


21

このexecute関数は文字列を引数として受け取り、文字列を展開して通常のexコマンドで実行します。したがって、次のことができます。

function! MyFunction(someArg) 
    execute "normal! ". a:someArg. "l" 
endfunction

.CONCATENATE文字列への標準vimscript演算子です。

executeに短縮できますexe

見る :h :execute


編集 @Christian Brabandtのコメントについて、aとの連結についてポイントを追加します.

文書によると:

複数の引数は、間にスペースを入れて連結されます。余分なスペースを避けるには、「。」を使用します。文字列を1つの引数に連結する演算子。

したがって、コマンドは次のようになります。

execute "normal!" a:someArg . "l"

実行されるコマンドは次のとおりです。

normal! 2l

8
「。」は必要ありません。exeは、文字列をスペースなしで連結します。
クリスチャンブラバンド

1
@KristianBrabandt真剣に待ちますか?知らなかったよ。
タンブラー41

@ChristianBrabandt私はその感謝を知りませんでした!
statox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.