※要改稿。 Vimmer はあまりに多かった
にわか仕込みの知識で書いています。憶測も多い、いい加減な内容です。
なぜCLIエディタは流行らないのか
プログラミングに使う必要が無い
IDEが凄い(integrated development environment; 統合開発環境)
機能が凄すぎますし、CLI的な操作性の取り込みも進化しました。完全ではありませんが、プログラミングには十分な操作性です。
GUIエディタが凄い
AtomやVSCodeですね。初期状態でも非常に優れていますし、プラグインも容易に導入できます。学習コストがほぼ0なのに、CLIエディタの長所を上回る場面も多いです。
一般ユーザには必要無い操作性だった
マウスもありますし、Ctrl や Option キーで単語単位の操作ができるなら十分、ということだと思います。
改善が遅かった
Vimに埋め込みターミナル(:term
)が付いたのは、2018年のことです。日本語入力の改善も、かなり遅かったと聞いています。
CLIのエディタはプラグインが強いですが、逆に言えば、プラグインを入れなければ使い物にならない期間が長過ぎたのではないかと思います。
今はかなり改善されましたが、それでも設定ファイルの編集は必須だと思います。
なぜCLIエディタは生き残っているのか
かつて、メインストリームだった
シェルで見たように、「CLI=時代遅れの遺物」という印象は誤りです。歴史的には、GUIよりも、CLIエディタの方が高機能だったのではないでしょうか。
良いGUIエディタが無かったとも言えそうです。
lessコマンドの速さと高級さは、今でもGUIエディタより優れていますね。pagerのみならず、エディタも同様だったと想像できます。
手周りが良い
ターミナルの1タブとして使用できる
小回りが利きます。
画面が良い
実は、片大のCLIエディタはお洒落です。
機能的に優れている
フレームワークとして優れている
CLIエディタ、特にVimは、独自のテキストの編集観を生み出しました。一度ハマったら抜けられません。
操作性が優れている
マウス操作を使わずに思い通りの編集ができます。GUIエディタでは考えづらいことです。
IDEやコードエディタにも、Vim風操作の拡張などがありますが、ディテールでは及びません。コード以外、つまり純粋なテキストの編集では、IDEよりもCLIエディタが優っています。
プラグインが強い
手を突くせば、今でも最新の機能を持った環境に仕上げられます。特殊な修正を自在に施すこともできます。それを好んだ愛好家たちが、CLIエディタを支えています。
今でも必要性がある
日々の使用
操作性の良さから、rcファイルの編集などには最適です。英語文書の編集にも適しています。文書を編集していく箱庭としても使えます。
日本語の編集に使う余地もあります。
CLIエディタしか使えない状況
具体的にはリモートログイン。サーバ周りの人などは、Vimを使わざるを得ないようです。
Vimの特徴
エディタとして
操作の基本的な前提が変わります。
『モード』が分かれている
通常は『ノーマルモード』で、カーソル移動やスクロールに特化しており、文字入力ができません。iキーで挿入モード。シフトキーの代わりに、Ctrl+vで選択モードに入ります。
モード毎に操作が分かれているため、修飾キーを必要としないキー操作が多く、軽快なキーストロークで編集できます。
動作=操作+範囲
まとまった操作単位で履歴がつくため、リピート操作や redo/undo が強力です。
Emacsとの比較
Emacsはテキストデータの処理環境であり、Vimはテキストの編集操作環境だと思います。EMacsに詳しくないのでなんですが……。
日本語入力とVimの相性
通常は、モードの切り替えは半角アルファベットで行います。そのため、頻繁に半角/全角を切り替えるか、自動的に半角/全角が切り替わるような設定を組みます。
- 文節単位の操作ができます(非常に便利)
- 句読点区切りの操作ができます(非常に便利)
- スクロールは段落単位です(やや不便)
- ピクセル単位ではありません
- 表示行ではなく改行記号単位です
Vimの機能(箱庭として)
標準的な機能
マルチタブ :tabnew
gt
gT
タブ操作には慣れが必要です。ファイルのエクスプローラもあります。
[t
や]t
のショートカットを設定するのが一般的です。
画面分割 :sp
^w
フォルダを開く
プラグインの導入が必要です。 e.g. NERDTree
ウィンドウとバッファ b
ウィンドウとファイルを自在に対応させることができます。たとえば、ウィンドウを閉じても、ファイルの編集状態はエディタ上に保持できます。
テキスト表示
ハイライト
ソースコードやマークダウンなどの編集時に役立ちます。ファイルの種類に応じた設定も可能です。
文字数の常駐表示
ステータスラインに表示する文字列を変更します。
特定字数で折り返し
Goyoプラグインにより、一応可能です。生のVimは対応していません。
シェル
シェルコマンド :! command
現ディレクトリ位置がありますし、シェルコマンドが使えます。
:terminal
NeovimやVim8では、擬似ターミナルを起動できます。Vimの中でターミナルのタブを持てるようなものです。リモートログインで重宝するとか。
組み込みのヘルプ :help <anything>
CLIツールの例に漏れず、詳しいヘルプが入っています。
どのVimを使う?
どれを使ってもいいです。Spacemacs以外は大差無いと思います。
本家Vimを使う場合は、アップデートしてあげてから使ってください。
本家Vim
動きが遅い
特にiTerm2を使っていると、GVim(GUI実装のVim)やNeovimの方が極端に速いです。
Neovim
UIを英語にする
完璧な方法かはさておき、取り急ぎbash.rcにエイリアスを作ってしのぎます。これも中二病のためです。
nvim() { command nvim --cmd 'lang en_US' "$@"; }
.vimrc相当ファイル
~/.vimrc
へのシンボリックリンクにしておきます。取り急ぎ。
$ mkdir -~/.config/nvim $ ln -s ~/.vimrc ~/.config/nvim/init.vim
本当はちゃんと管理した方がいいです。調査中。
GVim
操作性
GUIアプリなので、マウス操作ができ、慣れ親しんだ類のショートカットが始めからます(ファイルを開く、タブ移動、など)。
メニューバーからの操作が豊富です。初期状態では白背景だと思いますが、メニューから一発で変更できます。
Spacemacs
というのもありかもしれません。設定が難しそう。
Atom or VS Code + Plugin
細部が残念ですが、コーディングには十分だと思います。設定はGUIからになります。
入門法
まず$ vimtutor
をやります。チートシートを読んだり検索を繰り返し、メモを取っていくと良いと思います。
まとまったテキストなら、やはりこの本です。キー操作に慣れてから読むと効きます。