LoginSignup
0
1

More than 1 year has passed since last update.

(Neo)vimの標準コマンドの引数に変数を渡したかった

Posted at

問題

以下の init.vim のように、変数を定義した場合でも、そのまま記述してしまうと、vimでデフォルトで定義されているコマンドに展開されず、意図した動作にならない

(せめて echo も同じ動きにしてくれれば…)

init.vim

init.vim
let s:hoge_txt_file_name = "hogehoge.txt"
command! ShowHoge echo s:hoge_txt_file_name
command! ReadHoge e s:hoge_txt_file_name

結果

そのまま引っ張ってきたわけではないので、 (特にエラーメッセージについては) 一言一句正しい物ではないが、おおむねこのような結果になる

:ShowHoge
> hogehoge.txt
:ReadHoge
> s:hoge_txt_file_name は開けません

解決方法

vimのコマンドの引数に変数を使用したい場合は execute コマンドの引数として、文字列で実行したいコマンドを渡してやれば良い

init.vim
let s:hoge_txt_file_name = "hogehoge.txt"
" echoは…まぁこのままでもいいです…動くし…
command! ShowHoge echo s:hoge_txt_file_name
" こっちは execute コマンドの引数として、文字列展開&結合した結果を渡すことで、解決可能です
command! ReadHoge execute "e " . s:hoge_txt_file_name
0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1