概要
普段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使用に特化したキーボードとかあっても面白そう。