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
機能は控えめだが操作が平易なテキストエディタ。 ターミナル初心者に勧めやすいし、軽微なサーバー作業でも頼りになる。
Installation
Linux にも Mac にも最初からインストールされている。 それが古くてどうしても気に入らない場合は Homebrew とかで新しいのを入れる:
brew install nano
nano -V
Configuration
各種設定は ~/.nanorc ファイルで。
とはいえ、フルカスタムしたところで機能は高が知れているし、
動かなくなったら困るので最低限の設定にとどめる。