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 行カット
ctrl-c 中断

移動

key action
hjkl
b B 単語頭
w W 次の単語頭
0 行頭
^ 行頭 (非空白)
$ 行末
H 画面先頭
L 画面末尾
gg ファイル先頭
G ファイル末尾
ctrl-b 前ページ
ctrl-u 半ページ上
ctrl-d 半ページ下
ctrl-f 次ページ

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

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

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

コピペ

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

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

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

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

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

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

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

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

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

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

shift-v で行単位選択。 ctrl-v で矩形選択。

GNU nano

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

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

Installation

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

brew install nano
nano -V

Configuration

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