ラベル keymapping の投稿を表示しています。 すべての投稿を表示
ラベル keymapping の投稿を表示しています。 すべての投稿を表示

2008年10月1日水曜日

範囲選択文字列を検索

Vim で、ビジュアルモード時に * と # を押したら、選択されている文字列を検索させます。

let s:RangeAsterisk__reg = ''
function! s:RangeAsterisk__keepReg()
let s:RangeAsterisk__reg = @*
endfunction
function! s:RangeAsterisk__restoreReg()
let @* = s:RangeAsterisk__reg
endfunction
vnoremap * :call RangeAsterisk__keepReg()gv"*y/*:call RangeAsterisk__restoreReg()
vnoremap # :call RangeAsterisk__keepReg()gv"*y?*:call RangeAsterisk__restoreReg()

通常、* と # は (ビジュアルモード中であっても) カーソル直下の単語を検索しますが、これはあまり直感的とは言えません。
いちいちコピーしてから / で (貼り付けして) 検索するのも煩わしいものです。


現在 vimrc は 325 行...
もうちょっと外に追い出したいなぁ。

2008年9月15日月曜日

Vim での括弧自動補完 AutoClose

とかなんとかやっていたら、AutoClose というプラグインがあるのを発見しました。
あらまあ素敵。

ちなみに、同名のプラグインが 2 つあるようです。
僕は更新のされている方 (script_id=2009) を使ってます。
もう一つの方 (script_id=1849) との比較はやってません。

2008年7月16日水曜日

Vim での括弧自動補完

ここでの内容を基に、自分なりにカスタマイズしてみる。
" 括弧と引用符の補完
inoremap  (   ()
inoremap  ()  ()
inoremap  <   <>
inoremap  <>  <>
inoremap  [   []
inoremap  []  []
inoremap  {   {}
inoremap  {}  {}
inoremap  "   ""
inoremap  ""  ""
inoremap  '   ''
inoremap  ''  ''
問題点:
  1. It's のようなアポストロフィには未対応
    It's'  となってしまう
  2. 先に閉じ括弧を入力していた場合にも未対応
    ()) ← こうなる
    まぁ、これはどうでもいいや
  3. 引用符をコメント開始の記号にしているファイルタイプには未対応
    vim とか、vb とか
    特に、vim なんて二重引用符がコメントにも文字列リテラルにもなるし…
一番の問題は 1 なんだけど、これを解決しようとするとなると、やっぱりスクリプトを書かないといけない気がする。面倒。

1 のケースでは、カーソル位置が
It's|'
に来るのだから単純に <Del> を一回押してよ、と思うし。これもどうでも良いや。