Skip to content

Instantly share code, notes, and snippets.

@mopp
Last active December 31, 2015 01:19
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mopp/7913418 to your computer and use it in GitHub Desktop.
Save mopp/7913418 to your computer and use it in GitHub Desktop.
" 定数を使いたい
let lst = ['a', 'b', 'c']
lockvar lst " 変数を書き換えられないようにする
" let lst[0] = 'd' -> ERROR!
unlockvar lst " 解除
" Vim script以外のファイルを読み込みたいとき
" 結果はファイルの行がリストとしてかえる
let lst = readfile('hogehoge.txt')
" 逆に書き込みを行うときは以下
call writefile(lst, 'hugahuga.txt')
" ファイルではなくてバッファに書き込むときは
call append(0, lst)
" こういうようにファイルを扱うときは
" List番号と行番号を対応付けて処理するのが手っ取り早いです
" カーソル位置の文字列取得
let corsor_char = matchstr(getline('.'), '.', col('.')-1)
" これは現在行を取得して、そこから現在のカーソル位置-1の一文字を取得しています
" 第二引数は正規表現です
" 分岐以外を使ってオプションにより変数を変えたいとき
let var_name = 'hoge'
let test_hoge = 'hoge variable'
let test_huga = 'huga variable'
echomsg test_{ var_name }
" 波括弧付き変数です。
" なんか気持ち悪いですがオプションで変数を切り替えたいときは便利です
" 辞書内の要素で検索
" 文字列で式をわたし、その結果が0なら値を削除します
let lst = ['foo1', 'foo2', 'foo3']
let searched = filter(copy(lst), 'v:val != "foo1"')
" これだとfoo1以外を取りだしています
" is isnot を使ってlistや辞書が同じインスタンスの比較をする
if (lst isnot searched)
echomsg 'lst isnot searched'
endif
" グローバル変数の初期化
let g:layoutplugin#user_name = get(g:, "layoutplugin#user_name", string($USER))
" これで、g:内に第二引数と同じ名前の変数があればそれがかえります。
" もしなければデフォルト値として第三引数が使用されます。
" Exコマンド実行結果を保存するには
" 以下のようにして変数にリダイレクトします
redir => stored_cmd
map
redir END
echomsg string(stored_cmd)
" 他にもレジスタやファイルにリダイレクト可能です
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment