概要
普段vimを使用しているものの、全然使いこなせていないので以下の本を読み始めた。
詳細な解説が記載されていて、とてもわかりやすい。
リンク
一度に全部覚えるのは無理なので簡単そうなものからメモしておいて日常的に使えるようにする。
移動系
以下のコマンドはg0のようにgと組み合わせると表示行での先頭や末尾になる。
| コマンド | 内容 |
|---|---|
| 0 | 先頭文字に移動 |
| ^ | 先頭の空白以外の文字に移動 |
| $ | 末尾に移動 |
gkやgjはよく使うけど、先頭や末尾への移動でも使えることは知らなかった。
検索系
行内を移動する場合に、検索コマンドを使用する方が早い場合がある。
| コマンド | 内容 |
|---|---|
| f{char} | 現在行の末尾へ向かって文字を検索。検索対象上にカーソルが移動。 |
| F{char} | 現在行の先頭へ向かって文字を検索。検索対象上にカーソルが移動。 |
| t{char} | 現在行の末尾へ向かって文字を検索。検索対象の手前にカーソルが移動。 |
| T{char} | 現在行の先頭へ向かって文字を検索。検索対象の手前にカーソルが移動。 |
| ; | 直前に行った検索を再実行 |
| , | 直前に行った検索を逆方向に実行 |
abc.def.ghi
このような文字列があり、aにカーソルがあると、f.では最初の.に移動t.ではcに移動する。;を押すとそれぞれ.とfに移動する。,を押すとそれぞれ.とdに移動する。tコマンドの場合は検索対象の手前に移動するので、戻った時は位置が逆になる。
移動したい時にはfがわかりやすいが、dt.のように削除やヤンクと組み合わせる時はtも使いやすそう。
| |
上記のsにカーソルがあってsomethingを別の単語にしたい時だとct.でsomethingを消しつつ挿入モードになる
(上記はあまり例がよくなて、cawだとsometing上のどこにカーソルがあっても同じことができる。)/コマンドでの検索もdコマンド等と組み合わせられる。d/thing<CR>を行うと現在地以降最初に見つかったthingの前までが削除される。
複数行に渡って削除したいような時は/を使用するやり方が有効そう。
特定の文字で囲まれた範囲で何かする
'hogehogehoge'
{ hoge: hoge }
<h1>hogehoge</h1>
上記のように同じ記号で囲まれた範囲内を編集したい時がよくある。vi'やvi{とするとそれぞれ''と{}の内側が選択範囲となる。
同じように、di'とすると囲まれた中が削除される。va'のようにaを使用すると'hogehogehoge'が選択範囲となる。<h1>の例だと、vitとするとタグの中を選択することができる。
この時、最初の<から最後の>までのどこにカーソルがあってもhogehogeが選択される。
hoge('hogehogehoge', foo)
上記で()内を全て書き直したいとなったときは(から)の何処かにカーソルがあればci(で削除と挿入を行える。
その他
自作キーボードでキーマップを定義するとき、vimのコマンドをマクロとして登録しておくのも便利なのかなと思った。
今開いているファイルと同じディレクトリを開きたいときは:e %:h<tab><CR>と入力するが、結構長いのでボタン一つでできたら楽かもしれない。
手癖でできるくらいに染み付かせた方がキーボード変わってもできるので良いが、vim使用に特化したキーボードとかあっても面白そう。