Vim

入力より先に覚えたいVimのウィンドウ操作のこと

ほとんどのVimの解説を見ながらぼんやりと思ってたことなんだけど、今日日Vimってカーソルキー使えるわけだし、乱暴な話モード切り替えるa:w:q教えたら文章「は」打てるわけじゃないっすか?1んで「なんだこれ不便だな」ってなった人にコマンドの洪水をブチ撒けてあとは様子を見るみたいな雑な方法がデジタリアンがやる由緒正しい洗脳で、その方法にとやかく文句を言うつもりはないんだけど、その流れの中で「:h [command]出来ますよ」って言うなら先に教えるべきは:spとか:sbpなんじゃないの?って思っちゃったんですよ。
というより現時点でバッファを辿りたいことがすごく多くて、その度にb以外に何も思い出せないことがすごく多いので、まずそれを把握していこうと思いました。ハイ導入終わり。

Window Licker

ウィンドウ分割したい時にまず考えることは「縦/横どっちに割りたいか?」なので、まず大本の:sp:vsを覚えて、そこから単語を修飾していくような方法で覚えるのがいいのかなと思いながらまとめ始めます…と言っても覚えるべきは

  • :sp[lit] is SPlit window.
  • :vs[plit] is Vertical Split window.

だけなのでどんどん進みます。

ここでチュートリアルを見ながら、<C-w> sやら<C-w> vに気がついたのでここも捉えられるな、ということで自分で覚えるためにもうちょっとまとめます。

command key map
:sp <C-w> s
:vs <C-w> v
:new <C-w> n
:q <C-w> q
:clo[se] <C-w> c
:on[ly] <C-w> o

ここで覚えている:only:closeのキーマップの方も一緒に記憶してしまうこととします。あと今まで頑張っていちいち:vneしてたのはなんだったのか…ってなってます。

人間は間違える

新しくウィンドウを作る方はこれで覚えたとして、じゃあ実際は?というと間違えるわけで、次は間違えたあと修正する方法を覚えたいところです。<C-w>絡みのキーマップにそのあたりがあるのでそれで処理しましょう。

フォーカスを移動 ウィンドウを移動
h (←) <C-w> h <C-w> H
j (↓) <C-w> j <C-w> J
k (↑) <C-w> k <C-w> K
l (→) <C-w> l <C-w> L
w (次) <C-w> w <C-w> r
W (前) <C-w> W <C-w> R

見えるものは全てこれで把握できるかなと。ウィンドウ移動がコマンドで実現できる:to[pleft]:bo[tright]もあるんだけどなんかとっ散らかるんで…
ウィンドウサイズに関してはマウスでやるほうが早いんじゃないっすかね?2

見えないものを見ようとして

ここからさらに間違えるとして、やり直そうとして閉じてしまった場合のことまでフォローしに行けるのでそこまで把握します。閉じてしまったウィンドウは、まだバッファ内に存在するのでまずは確認する方法を覚えます。shでお馴染みの:lsが短くて覚えやすかったけど、じゃない人は:filesでも、バッファ系の操作はbなんちゃらなので複合して覚えるために:bufferでも…

カレントウィンドウ 新規ウィンドウ (上に) 新規ウィンドウ (左に)
任意のバッファ ([0-9]) :b [0-9] :sb [0-9] :vert sb [0-9]
次 (next) :bn :sbn :vert sbn
前 (previous) :bp :sbp :vert sbp
最初 (first) :bf :sbf :vert sbf
最後 (last) :bl :sbl :vert sbl

Vimに感じるクセというか、ヘルプドキュメントの欠陥臭い部分も解決したくて:bN:brに関することは省いています。3その上で、見慣れない:vertに関しての説明も。:vertコマンドはその後に続く任意の新規ウィンドウを開くコマンドのウィンドウ分割を上下から左右に替えるコマンドです。バッファをウィンドウとして再表示する際は:sp:vsじゃダメなのでこちらを使うんですけど、ぶっちゃけ開いてから<C-w> Hすれば覚えなくても…コマンド長いし。

もうめんどくさいから前の覚えてくれないの?

:mksなんで事もできるけど、Session.vimの保存場所がカレントディレクトリになり、set autochdirしてる我が家の環境では好きじゃない挙動するので…いい具合のプラグインが見つかりました。
xolox/vim-sessionを使います。

タイムマシンにお願い

vimrc
Plug 'xolox/vim-misc' | Plug 'xolox/vim-session'
    :
    :
    :
" vim-session
let g:session_directory = '~/vimfiles'
let g:session_autosave = 'yes'
let g:session_autoload = 'yes'
let g:session_autosave_periodic = 0

なんか検索して出た解説ではいろいろ書かなくちゃならない感じだったんだけどバージョンの問題なのかこれだけで何の不都合もないみたいです。Windowsだからかな?

記事更新中に気がついたこと

  • .を有効活用できることを意識する、特に反復作業は挿入モードを使ってマクロ的にやれる。
  • クリップボードからのペーストがめんどくさかったら<C-r> +を有効活用する。但しインデント周りで大変なことになる。
  • いい加減にi/aをちゃんと使えるようにする。

  1. もっと言うと<C-c>したり閉じるボタン押すだろうから:qすら必要ないまで… 

  2. もしくはwinresizerなんて便利なものもあるみたいです。 

  3. フォーカス移動の際にもそうなってたんですが、コマンドによる指定方向の逆を[shift+キー]で実現することが多いのに、ヘルプドキュメントの「任意の数字[N]」と「nextの逆の大文字のN」がごっちゃになって書かれているので、とても捉えづらかったんです。