More Related Content Similar to Vim script と vimrc の正しい書き方@nagoya.vim #1 Similar to Vim script と vimrc の正しい書き方@nagoya.vim #1 (20) Vim script と vimrc の正しい書き方@nagoya.vim #12. もくじ
1. Vim script とは?
2. 文法、変数、式
3. 制御構文
4. 関数、コマンド、autocmd
5. vimrc について
6. vimrc の正しい書き方
5. Vim script とは?
● Ex コマンドの : をとって適当なファイルに縦に
並べて書きます
● これが Vim script です
● vimrc は Vim が起動時に自動で実行する Vim
script ファイル
6. Vim script が何故重要か?
● みんなプラグイン書きましょう
● vimrc は Vim script で書く
● つまり、Vim script を知っているとより凝った設
定を書くことができる
○ Ruby の時はインデント幅 2、JavaScript は 4
○ 保存時に行末スペースをすべて削除
○ 全角スペースを可視化する
○ etc
7. 注意
❖ Vim script は vi からの後方互換性をひたすら
守りながら進化してきた言語です
❖ Vim の進化とともにいろいろな機能が後付けさ
れてきました
❖ という理由があるので言語仕様に文句を言わな
い(あきらめが肝心)
9. Vim script の文法
❖ Vim script は全て Ex コマンド
❖ 大半は Ex コマンド + その引数という構文に
なっている
❖ コマンドの引数がどのように解釈されるかは Ex
コマンドによって異なる
: echo "hello, world"vimrc に書くと
きは : は不要
Ex コマンド 引数
10. Vim script の例
❖ echo a b
➢ 変数 a と b の内容を出力する
❖ map a b
➢ a というキー入力を b というコマンドに割り当てる
❖ set foldmethod=marker
➢ foldmethod というオプションに文字列 "marker" を設
定する
➢ = の両側にスペースを入れることはできない
❖ let msg = "marker"
➢ msg という変数に文字列 "marker" を設定する
12. 変数
❖ let {変数名} = {式}
➢ 例) let name = "cohama"
➢ let x = 1
➢ let x += 1
注意
➢ x += 1 のようには書けません。
➢ これは :x というコマンドに += と 1 という引数を渡すと
いう意味 = Vim が終了する
13. データ型
❖ 数値
➢ 1 -3 0x2A 0777
❖ 浮動小数点
➢ 1.5 1.0e3
❖ 文字列
➢ "hoge" 'fuga' "u0061"
❖ リスト
➢ [1, 2, "hoge", [0.5, 1.2]]
❖ 辞書(連想配列)
➢ {"xyz": 123, "abc": [1, 2]}
15. 式
❖ 式が必要とされている場所では、式が使える
❖ 数値計算
➢ 1 + 1.5 a * 2 (3/2 + 1) % 4
❖ 文字列連結
➢ "hoge" . "fuga"
❖ リスト連結
➢ [1, 1, 3] + [4, 5]
❖ 比較
➢ 3 > 2 "hoge" =~# "^ho.*"
❖ 条件演算子
➢ (a == 42) ? "correct" : "wrong"
16. コメント
❖ Vim script におけるコメントは "
❖ ただし、コメントを書けない場合があるので注意
" これはコメント
let a = 1 " これもコメント
map a b " これはコメントではない!
19. ループ
for {var} in {list}
endfor
while {cond}
{statement}
endwhile
for i in range(1, 10)
echo i
endfor
例) 1 から 10 までを出力する
22. 関数
❖ もちろん Vim script にも関数はある
❖ 組み込み関数
➢ str2nr() : 文字列から数値を返す
➢ sin() : sin 関数
➢ len() : リストまたは辞書の要素数を返す
➢ getpos() : カーソルの位置を返す
➢ rename() : ファイルの名前を変更する
28. vimrc とは
Vim の設定ファイル
Vim を Vim として使うために(ほぼ)必須
vimrc があると Vim は自動的に 'compatible'
オプションをオフにする
(Vim が Vim として動作するようになる)
29. vimrc の配置
❖ Unix 系の場合
➢ $HOME/.vimrc
➢ $HOME/.vim/vimrc (Vim 7.4 から)
❖ Windows の場合
➢ $HOME/_vimrc
➢ $HOME/vimfiles/vimrc (Vim 7.4 から)
❖ .vim (または vimfiles) で全てを管理するのがおすすめ
❖ ちょっと Vim script を書くだけで、Unix 系と Windows の設
定を共有することも可能 ('runtimepath' を設定)
31. オプション
❖ Vim の設定といえばオプション
❖ 数えたら 350 くらいありました
" オン(オフ)にする
set number
set nonumber
" バッファローカル
setlocal tabstop=4
setlocal foldmethod=marker
35. マッピングの種類
❖ モード別のマッピング
➢ nmap : ノーマルモード
➢ imap : インサートモード
➢ xmap : ビジュアルモード
※ 他にもある
❖ 再マップする、しない
" : と ; を入れ替え
noremap : ;
noremap ; :
※ 再マッピングする意思がなければ基本的には nnoremap
41. リローダブルな vimrc を書く
❖ 詳しくは kana さんの書いた「Vim の極め方」を
参照のこと(http://whileimautomaton.net/2008/08/vimworkshop3-kana-presentation)
" 追加する形のオプションは一旦デフォルト値を設定
set backupdir& backupdir+=hoge
" あるいは起動時しか実行されないようにする
if has('vim_starting')
set runtimepath^=~/.vim
endif
42. リローダブルな vimrc を書く
" autocmd が複数登録されないように最初に消しておく
augroup myvimrc
autocmd!
augroup END
" 必ず augroup 名を指定して書く
autocmd myvimrc FileType scala setlocal sw=2