新規ドキュメント


忘れていく脳のための備忘録
by w_l_s
プロフィールを見る
画像一覧

vim script 覚書

カーソルキーの移動

今の位置から左に一文字移動。

今の位置から右に一文字移動。
vim scriptでカーソル位置を移動したい時に使う。
<>でくくる特殊な設定は他にもいっぱいある。
とかとか(Ctrl + r のこと)
詳しくは
:help <>
:help
:help

キーバインド設定
imap [ []
上の設定を行うと、[ と入力するしたとき [] にしてくれて [ | ] の | の位置にカーソルを移動してくれる。
ノーマルモード時の設定ならnmap、編集モード(インサートモード)時ならimapと、種類がいろいろ。
細かいことは:help mapで見てみよう。

キーバインド削除
iunmap [
上の設定を行うと、[ に登録していたキーバインドが削除される。
imap [ []を設定していた場合、解除後は普通に [ だけ入力される。
これまた nunmapとかiunmapとかいろいろなので、詳しくは:help unmapで調べよう。

こいつらを使えば、 [ と入力すると [] にしてくれてその中にカーソルが入るキーバインドが書ける。
こんな感じ

:inoremap [ []<Left>
:inoremap { {}<Left>
:inoremap ( ()<Left>
:inoremap " ""<Left>
:inoremap ' ''<Left>
:inoremap ` ``<Left>


でもいつでも補完して欲しいわけじゃない。
例えば、vimrcのコメント記号が " だけど、こんなときに補完してもらっても嬉しくない。
という訳で、使わないときは削除しよう。
:iunmap [
:iunmap {
:iunmap (
:iunmap "
:iunmap '
:iunmap `

以上で " を "" に補完出来る。
でも、いちいちコマンドを打って設定するのもめんどくさいので、.vimrcに書いておこう。
そして、好きなときに上記の設定を入れ替えられるようにしよう。
まずは、キーバインドを設定する関数 ClosePairOn を定義する。
vim scriptでの関数は先頭を大文字にしないと行けないことに注意が必要だ。

function! ClosePairOn()
let b:closepair = 0
inoremap [ []
inoremap { {}
inoremap ( ()
inoremap " ""
inoremap ' ''
inoremap ` ``
endfunction

次に、削除する関数 ClosePairOff を定義する。ClosePairOnにもある!マークは、同じ名前の関数があっても
エラーを出さずに、新しい関数で上書きすることを示している。vimrcを再読込してもエラーが起きないようにね。

function! ClosePairOff()
iunmap [
iunmap {
iunmap (
iunmap "
iunmap '
iunmap `
endfunction

後はこれを交互に実行する関数 ToggleClosePair を定義する。
今はどの状態なのかを覚えておくために変数を使う。変数の定義はこんな感じ。
let g:closepair_status = 0
letで変数を宣言する。
g:とあるのは、この変数はグローバル変数ですよという意味だ。
この変数の値が0で off , 1で on ということにしよう。
実行時に、今の状態が表示されると分かりやすくていいと思う。
状態を管理し、交互に実行する関数 ToggleClosePair はこんなのでどうだろう。

function! ToggleClosePair()
if !exists("g:closepair_status")
let g:closepair_status = 1
endif

if(g:closepair_status)
let g:closepair_status = 0
echo "Current: Closing Pair On"
call ClosePairOn()
else
let g:closepair_status = 1
echo "Current: Closing Pair Off"
call ClosePairOff()
endif
endfunction


あとはこれにキーバインドを設定し、コマンドを打ち込まなくても実行できるようにしよう。
nnoremap { :call ToggleClosePair()
というのは実行したコマンドをコマンドラインに表示させないオプションだ。
これがないとToggleClosePair()と一瞬表示される。目触りだったので消した。
上記の設定だと、Ctrlを押しながらpを押し、その後すぐに{を入力すれば切り替えられる。

出来れば、バッファやタブごとの設定にしたかったけど、b: や t: の挙動がわからなかったので今回は諦めた。

vimはヘルプが充実してるので、helpコマンドで調べるとコマンドの意味がすぐわかってとてもやりやすい。
香り屋さんがhelpの日本語訳を公開してくださっているので、ぜひいれておこう。


xxxするときはどうすればいいの?という、やりたいことからコマンドを見つけるのは、
ヘルプの量が多いので大変かも。逆引きサイトとかあるかな?
[PR]
by w_l_s | 2010-11-24 01:26

カテゴリ

全体
erlang
Python
c言語
作って遊ぼう
シェルスクリプト
OS
javascript
jQuery
反省
vim
未分類

お気に入りブログ

メモ帳

最新のトラックバック

ライフログ

検索

タグ

ファン

記事ランキング

ブログジャンル

画像一覧