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