vimtutorで速習Vim

2021.07.29

たまにVimを使う機会があります。一番多いケースはサーバー上の設定ファイルの修正時ですね。ローカルでも ~/.ssh/config~/.aws/configの設定はVimでやることが殆どです。が、私のVim知識はペラペラで、専ら以下コマンドくらいしか知りません。

  • iでInsert Modeになって、編集可能になる
    • escでもとに戻る
  • :wで保存
  • :qでvimを閉じる
    • :q!は変更があっても保存無しでvimを閉じる
  • :wqで上記2コマンドを一括でできる
  • ddで行削除
  • yyでコピー、 pでペースト
    • 3yyなどとやると3行コピーできる

一度ちゃんとVim学びたいなぁと思っていたところ、vimtutorというチュートリアルがすぐに体験できるということを知り、今回やってみました。

vimtutorとは

Vimの基本を短時間で学べるチュートリアルです。Vimが使えるPCであればコンソールにてvimtutorコマンドから始めることができるはずです。この手軽さがとても良いですね。コマンド実行するとVimで教材テキストファイル(日本語)が開き、その内容を読み、また実際手を動かすことでVimの基本を学んでいくことができます。

所要時間は25から30分です、と教材内に記載されています。ですが私の感想としてはもう少し、1時間くらいかかるんじゃないかなぁと思います。(私はこのブログを書きながらやっていたのでもっとかかりました。)

内容

以下の通り、全7章の構成です。各章末には要約があるので都度振り返ることができます。

  • レッスン 1.1: カーソルの移動
  • レッスン 1.2: VIM の起動と終了
  • レッスン 1.3: テキスト編集 - 削除
  • レッスン 1.4: テキスト編集 - 挿入
  • レッスン 1.5: テキスト編集 - 追加
  • レッスン 1.6: ファイルの編集
  • レッスン 2.1: 削除コマンド
  • レッスン 2.2: その他の削除コマンド
  • レッスン 2.3: オペレータとモーション
  • レッスン 2.4: モーションにカウントを使用する
  • レッスン 2.5: より多くを削除するためにカウントを使用する
  • レッスン 2.6: 行の操作
  • レッスン 2.7: やり直しコマンド
  • レッスン 3.1: 貼り付けコマンド
  • レッスン 3.2: 置き換えコマンド
  • レッスン 3.3: 変更コマンド
  • レッスン 3.4: c を使用したその他の変更
  • レッスン 4.1: 位置とファイルの情報
  • レッスン 4.2: 検索コマンド
  • レッスン 4.3: 対応する括弧を検索
  • レッスン 4.4: 間違いを変更する方法
  • レッスン 5.1: 外部コマンドを実行する方法
  • レッスン 5.2: その他のファイルへ書き込み
  • レッスン 5.3: 選択した書き込み
  • レッスン 5.4: ファイルの取込と合併
  • レッスン 6.1: オープンコマンド
  • レッスン 6.2: 追加コマンド
  • レッスン 6.3: その他の置換方法
  • レッスン 6.4: テキストのコピーとペースト
  • レッスン 6.5: オプションの設定
  • レッスン 7.1: オンラインヘルプコマンド
  • レッスン 7.2: 起動スクリプトの作成
  • レッスン 7.3: 補完

感想

沢山のコマンドを学ぶことができました!正直現時点では「知った」レベルなのでガンガン活用できるかは怪しい(=忘れそう)ですが、特に良いと思った以下だけでも覚えておいて今後使っていきたいと思いました。

  • 各モーション
    • w - wordの先頭に移動
    • e - wordの末尾に移動
    • $ - 行末に移動
    • 0 - 行頭に移動
  • 多くのコマンドはオペレータとモーション(とカウント)の組み合わせで成り立っている
    • 例: de(オペレーターdとモーションeの組み合わせ)でカーソル位置から単語の終わりまでを削除
    • 例: d2w(オペレーターdとモーションwとカウント2の組み合わせ)で2単語削除
  • 行全体に対する操作は同じ文字2回(例:dd)
  • uで最後の操作取り消し
  • /で検索
    • ?で逆方向検索
    • 検索中はnで次の、N で一つ前のヒット位置へ移動
    • :set is で部分マッチ検索
    • :set hls でマッチするすべてを強調表示
  • 置換
    • :s/old/new 該当行の最初の一致箇所を置換
    • :s/old/new/g 該当行の一致箇所を全置換
    • :1,10s/old/new/g 1〜10行目の一致箇所を全置換
    • :%s/old/new/g ファイル全体の一致箇所を全置換

あとは、日本語文章を編集するのは難しいなと感じました。Vimのコマンド打ってるつもりでも、日本語入力モードになってるとコマンドと認識されない、という状況が頻発したので。一度英数に戻してコマンド打って、再度日本語に戻して…というのが煩雑でした。どうやらこのあたりもカスタマイズ次第では克服できるようなので、本格的にVimを使うようになったら取り組んでいきたいと思いました。