vimscriptを書いてて、詰まったところ
Posted on 2014年05月11日(日) in articles
pyfileで引数を渡す方法
pythonであれば
python sample.py test
という形で実行するがvimではpyfileでpythonファイルを実行できるが、以下の様なやり方ではダメ。
pyfile sample.py test
こうではなく、以下の様にして引数を渡す
:python import sys
" pythonではsys.argvの0番目はスクリプトのファイル名
:python sys.argv = ["sample.py", "test"]
:pyfile sample.py
こうすると想定どおりに引数がpython側で受け取れる。
python側でvimで定義した変数を受け取る
vimscriptの変数をpython側で受け取るにはvim.evalを使用する。
let tmp = "Test"
python << EOM
import vim
print(vim.eval("tmp"))
EOM
こんな感じ
vimでの文字列連結
文字列連結でつい"sample"+"test"とか書きがちだが、.(ドット)でつなげる。
let a = "sample"
let b = "test"
echo a.b
ユーザ定義commandの引数を関数に渡す
<f-args>を使う。
詳細は:h <f-args>で。
Gvimかどうかの判定
has("gui_running")でできる
echo has("gui_running")
1
こんな感じかな。 vimpluginを書くときはまず、:h vim-scriptと:h write-pluginあたりを読むほうがその後が楽だなと思った。