viのチートシート的な?(*vimじゃないよviだよ)

突然ですがviエディターは知ってますか?

でも普通は使わないですよねえ.

macならemacsがあるし,linux系統にしてもviよりは使いやすいvimがあるしでまず使わないと思います(高専でも最初に使ったのはvimだし).

しかし、ちょっと使う機会が何故かできたのと他に書く内容が思いつかなかったので書きます.

iだけじゃないaもだ

普通vimエディターでの編集にあたり,コマンドモードから編集モードに移行するには[i]を使います.通常vimを使ってたらまず使いません.教えてもらってもiでへんしゅうできるからぐらいの軽いものです.でもviは格が違います.

そもそもiとaの違いは些細な違いです.

  • i  :現在のカーソル位置から挿入
  • a :現在のカーソル位置からの後から挿入

現在のカソール位置を基準にして前後から挿入するかだけです.

基本矢印キーで移動できるvimであればiで挿入モードに変更してから編集したい位置に移動すればなんら問題ありません.ですがviは違います.

f:id:qvel:20180301172719p:plain

189行目の末尾に;(セミコロン)を追加したい

例えば,上のプログラムにおいて;を挿入したいと思います.vimならiで編集モードにした後カーソルを末尾まで移動させればできるけど、viは末尾に移動ができません.こういう場面ではaを使うことでカーソル位置の後ろから挿入できるようにする必要があります.

f:id:qvel:20180301172822p:plain

iでの挿入モードだと末尾への移動ができない

こういう末尾に何かを追加したいという場面は頻繁に登場するため,Aコマンドを覚えておくとvimで作業しないと行けない場面があればそちらでも便利です.

  • A:現在の行の末尾へと追加する.

JだのOだのなんて使わないよね

普通iによって挿入モードになれば,編集するだけならばもうちょい便利にならないかなとは思ってもコマンドなんて覚えなくても普通に編集できます.

特に改行や行を消すなんてことはEnterやBack押せば普通にできます.じゃあ何でこんなことを書くかって?

・・・ viじゃ普通にできないからだよ.

勢い余ってEnterを2回タッーンタッーンって押して改行してしまったらさあ大変.戻ろうと思ってBack押しても改行部分が消せずに前の行に戻れない.

編集モードだと行自体を消すことが不可能でコマンドモードでの行の折りたたみが必要になります.それが最初に強調してるJモードです.

  • J:現在のカーソル位置の次の行を現在の行へと折りたたむ

このコマンドは結構便利で,再確認のときに見てたら改行が多くて見づらいときにわざわざ編集モードにしなくても行を折りたためます(もちろんコマンドの前に3とか4とか打っとけば複数の行をたためる).

後、途中の場所から改行して編集しなくては行けないときはoとOが何かと便利です.

  • o:次の行を挿入してから編集開始
  • O:前の行から行を挿入して編集開始

 そんなわけで初投稿は以上になります.もしこんなviを使いたかったらOSをNETBSDにしてからやってみましょう.