Heavy Watal

vi

概要

ターミナル上で軽快に動作するテキストエディタ。 文字入力はインサートモード、それ以外はすべてノーマルモードで行う。 起動時はノーマルモード。

オリジナルがvi、改良版がvim (Vi IMproved)。 ただし、shの正体がbashであるように、LinuxやMacに入ってるviの正体はvim。 vimのデフォルトは拡張を無効にしたvi互換モード。 つまり設定をいじらなければ起動コマンドはviでもvimでも同じ?

ターミナル上で設定ファイルを修正したり、 git commit でメッセージ入力したり、 といった軽い用途でしか私は使わない。 その用途でも人に紹介するなら後述のnanoから。 それ以上のテキスト編集はVSCodeで。 Neovimも気になってはいる。

ノーマルモード

とりあえず覚えてないと死ぬやつ

key action
i インサートモードに移行
:w 保存
:q 終了
:q! 保存しないで強制終了
u 元に戻す
x 1文字削除 (行は消せない)
dd 行カット
ctrlc 中断

移動

key action
hjkl
b 前の単語頭 (ハイフンとかでも区切る)
B 前の単語頭 (空白のみ認識)
w 次の単語頭 (ハイフンとかでも区切る)
W 次の単語頭 (空白のみ認識)
0 行頭
^ 行頭 (非空白)
$ 行末
H 画面先頭
L 画面末尾
gg ファイル先頭
G ファイル末尾
ctrlb 前ページ
ctrlu 半ページ上
ctrld 半ページ下
ctrlf 次ページ

数字と組み合わせられる。 e.g., 3jで3行下

eは単語末じゃなくてそのひとつ前に移動するので気持ち悪い。

カーソルの移動だけでなく、コピーなどの動作対象の指定にも使う。

コピペ

key action
d カット
y コピー
P ペースト

カットとコピーは対象を指定する必要がある。

d3l  # 右に3文字カット; 3dl でもいい
diw  # カーソル位置の単語をカット
yy   # 1行まるまるコピー

pはカーソルの右に挿入される謎仕様なので却下。 Pも挿入後のカーソル位置が気持ち悪いけど仕方ない。

範囲選択を見ながら操作したい場合は下記のヴィジュアルモードを使う。

マクロ

qに続けて任意の1文字を押すと記録開始。 qで終了

:q のつもりで誤って recording @ 状態になり、 escでもctrlcでも抜けられずにハマりがち。

例えば qw と入力して recording @w と表示されたら、 続けて ahelloesc と入力し、 q で登録完了。 @w で実行すると hello が入力される。 数字を頭につけて繰り返すこともできる。

インサートモード -- INSERT --

キー入力しかしない。 カーソルキーで移動はできるが、基本的にはしないつもりで。

ノーマルモードへの戻り方
esc: 標準だが遠すぎるので却下。
ctrl[: それなりに押しやすく、escと同じ挙動。
ctrlc: 最も押しやすいし覚えやすい。 インサートモードでのあらゆる動作を中断して戻るので注意。

ヴィジュアルモード -- VISUAL --

v で始まる範囲選択モード。 Emacsでいうctrlspace

shiftv で行単位選択。 ctrlv で矩形選択。

GNU nano

https://www.nano-editor.org/

機能は控えめだが操作が平易なテキストエディタ。 ターミナル初心者に勧めやすいし、軽微なサーバー作業でも頼りになる。

Installation

Linux にも Mac にも最初からインストールされている。 それが古くてどうしても気に入らない場合は Homebrew とかで新しいのを入れる:

brew install nano
nano -V

Configuration

各種設定は ~/.nanorc ファイルで。 とはいえ、フルカスタムしたところで機能は高が知れているし、 動かなくなったら困るので最低限の設定にとどめる。