🐥

Vimmerのための便利機能リスト

に公開

vimmerに憧れているそこのあなた、vimmerとしてさらに一歩進みたいあなたのための便利機能リストです。かくいう私もvimmerとして若輩なので、随時更新していきます。

コメントで「こんな機能もあるよ!」と教えていただけると、私も読者vimmerも大変助かります。

*** 注意 ***
以下、{}で囲まれたものは変数だと思ってください。

1. 戻る系

1.1 Ctrl c

ノーマルモードに戻ることができます。使いたてはEscしか知らなかったので、Ctrl + cでも戻れることを知って開発効率が飛躍的に向上しました。

1.2 Ctrl z

ターミナルに戻ることができます.:qと同義です.vimgrep (:vim)を使えばターミナルに戻る行為そのものを人生から排除できるようです.[1]

2. 閲覧系

2.1 :E

vim内部で現在のディレクトリにあるファイルを一覧することができます。-で親ディレクトリに移動できます。

2.2 vim -p

複数のファイルを開くとき、タブごとに一つずつファイルを開きます。gtでタブ間を移動できます。

2.3 Ctrl e

ページごと一行下にスライドできます。Ctrl yで上にいきます。

2.4 {

一つ上の空白行にカーソルを飛ばすことができます.連打することで高速移動可能です.

2.5 [[

ひとつ上のセクション(syntaxによって定義は変わるが,段落のようなもの)にカーソルを飛ばします.

2.6 {number} h, j, k, l

{number}の数だけカーソル移動できます。

2.7 Ctrl o

一つ前に見ていたウィンドウに戻ることができます.Ctrl iで進むことができます.
このコマンドを使うことでウェブブラウザのような使用感を実現できます.

2.8 :tabnew

新しいタブを生成できます.末尾に|Eを付けることでディレクトリを開いた状態で生成できます.

2.9 :sp

画面分割できます.:vspで縦方向に分割を入れることができます.
Ctrl wwでフォーカス移動できます.

2.10 m{something}

現在のカーソルがある箇所を{something}というマークで登録します.` {something}でマークに飛べます.
:marksでマークの一覧を見れます.
:delmarks {something}でマークの登録を消すことができます.

3. 検索系

3.1 f {something}

カーソルがある地点から行末まで,アルファベットや数字などの{something}を探しカーソルを飛ばします.逆に行頭方向に探したいときは大文字のFを使いましょう.

3.2 /{something}

現在のファイルから{something}を探してハイライトをつけます.nで次の検索対象,Nで前の検索対象にカーソル移動することができます.

[追記] Ctrl l

検索対象のハイライトを消して、ハイライトがない状態にできます。

3.3 #

現在のカーソルがある単語を検索にかけハイライトをつけることができます。3.2と同様にして検索対象間のカーソル移動ができます.

3.4 :vim {something} **

正規表現で書かれた{something}をカレントディレクトリ以下の全てのファイルから再帰的に発見します。/よりも高度な機能が使えます.
正規表現の基礎of基礎を含めて,vimgrepの使い方を以下にまとめたので,ぜひ試してみてください.
今さら正規表現に入門してみた話

3.5 :grep -R "{something}" . :copen

vimgrepと同様,該当する{something}をカレントディレクトリ以下の全てのファイルから再帰的に発見します.vimgrepよりも高速だと思います.

4. 置換系

4.1 :s/{old}/{new}/

現在カーソルがある行の1つの{old}{new}に置換します.

4.2 :s/{old}/{new}/g

現在カーソルがある行の全ての{old}{new}に置換します.

4.3 :%s/{old}/{new}/g

現在開いている全てのファイルの{old}{new}に置換します.

4.4 :vim /{old}/ ** :copen :cfdo %s/{old}/{new}/g

カレントディレクトリ以下の全てのファイルの{old}{new}に置換します.

5. 編集系

5.1 c i "

テキストオブジェクトと呼ばれる機能です。""で囲われた中身を一括消去してインサートモードに入ることができます。"([など対になるものであれば何でもokです。

5.2 Ctrl a

ノーマルモードのまま数字を一つインクリメントできます。Ctrl xでデクリメントできます。

5.3 b dw

現在カーソルがあるワードの先頭に行き,そのワードを消すことができます.

5.4 v {number}>

{number}だけ該当行を右にタブ移動させることができます.
複数行移動させたいときは,Ctrl v {number}>とビジュアルブロックモードを使うと良いです.もちろん><に変えることで左にタブ移動させることもできます.

6. 汎用系

6.1 @ :

1つ前のコマンドを繰り返し実行します.

6.2 :terminal

ウィンドウ内でターミナルを開くことができます.iでインサート(ターミナル)モード,Ctrl \からのCtrl nでノーマルモードに戻ることができます.

6.3 " + y

ヴィジュアルモードで選択した内容をクリップボードにコピーできます。neovim限定です。

6.4 :cexpr systemlist('{some terminal command}')

findなどのターミナルで使うコマンドをvimから実行できます.ファイル名,ディレクトリ名を探すときはvimの検索機能よりも,こちらを使ったほうが速くて便利です.

参考文献

[1] https://qiita.com/yuku_t/items/0c1aff03949cb1b8fe6b

Discussion