|
Vimは最も人気のあるテキストエディタの一つなので、使い方を学ぶ価値は間違いなくあります。この広く普及しているコマンドラインテキストエディタ、Vi(m)の使い方を、ファイルを開いてテキストを入力し編集し、編集したファイルを保存してプログラムを終了するまで学ぶだけでも、大きなメリットが得られます。
Vimが非常に便利なシナリオは、ほとんどの場合、リモートシェル操作の実行を必要とするタスクであることがわかります。例えば、時々SSHを使用する場合:
仮想プライベート サーバー (VPS) またはローカル仮想化コンテナーで作業している場合は、これらの強力な Vim スキルから大きなメリットを得ることができます。 Vimをデフォルトのテキストエディタに設定する ほぼすべての最近のLinux(またはBSD)ディストリビューションでは、ターミナルエミュレータのシェルコマンドプロンプトでVimを使用できます。ユーザーシェルプログラムでVimをデフォルトのエディタとして定義すると、使い慣れたVimのキーバインドを使用して、manなどの組み込みユーティリティを操作できるようになります。ここでは、BashとZシェル(zsh)を使ってこれを行う方法を説明します。Zシェルは、現在macOSユーザーのデフォルトシェル(Catalina以降)となっています。 (1)BashでVimをデフォルトに設定する Bashはドットファイルの組み合わせで設定を管理します。最も一般的な方法は、ホームディレクトリの.bashrcファイルにエディタを追加することですが、.bash_profileに追加することもできます。(両者の違いについては、GNU Bashのドキュメントをご覧ください。) ~/.bashrc ファイルに次のコードを追加して、Vim をデフォルトのエディターとして設定します。
# で始まる行はオプションのコメントであり、コマンドの目的を思い出すのに役立ちます。 (2)zshでVimをデフォルトに設定する zsh は、特に Apple の FreeBSD ベースの Darwin システムが最近 Bash から zsh に切り替えて以来、ますます人気が高まっているターミナル エミュレータです。 zsh のドットファイルは Bash ファイルと同等なので、~/.zshrc または ~/.zprofile のいずれかを選択できます。どちらを使用するかについては、zsh のドキュメントを参照してください。 デフォルトとして設定します:
Vimの設定を最適化する ターミナルエミュレータシェルと同様に、Vimも個人設定を行うためにドットファイルを使用します。このパターンに見覚えがあるなら、おそらくそれが~/.vimrcであることは既にお分かりでしょう。 最初に変更したい設定は、従来のVi互換モードをオフにすることです。VimはViのスーパーセットなので、Viのすべての機能がViで利用可能で、大幅な改善により、多くの高度な機能も利用できます。最新バージョン(8.2)では、サブプロセスシェルとして分割ウィンドウでターミナルを開くことができます。 ちなみに、従来のViとの互換性を明示的に無効にするのは無意味に思えます(実際、おそらく意味がないはずです)。Vimは.vimrcファイルを見つけると、暗黙的に自動的に互換モードをオフにします。しかし、明示的に無効にすることが重要な場合もあります。nocpという略語はnocompatibleと同義で、同じ効果が得られます。設定を切り替える方法はたくさんあります。 .vimrc 構文では、" で始まる行はコメントです (.bashrc ファイルの # と同様)。これらのコメントは、わかりにくい設定名が選択された理由などを思い出すのに役立ちます。 Vi 互換性を無効にするには、~/.vimrc ファイルに以下を追加します。
パターンを理解する Vimにおける「モード」の概念は非常に重要です。特に「通常モード」と「挿入モード」の区別は重要です。モードに関する混乱は、多くの初心者にとってよくある問題です。モードはVimに固有のものではなく、Viによって導入されたわけでもありません。コマンドモードは非常に古く、1970年代に発明されたコピー&ペースト機能よりも古いものです。 Vimはキーボード入力の動作を定義するために様々なモードに依存しています。理解しておくべき重要なモードは以下のとおりです。
各モードには、探索すべき点がたくさんあります。Vimtutor (vimtutor) を使えば、カーソルの移動方法、モード間の移動方法、行末モードでのExコマンドの実行方法をインタラクティブに学習できます。生産性向上に欠かせない演算子には、以下のようなものがあります。 Vimをピアノのように弾く Vimのオペレータ「言語」を暗記することは重要ですが、それをマスターする上での難しさは、音楽家のように考え、オペレータとアクションを「コード」として組み合わせ、ピアノを弾くようにVimを演奏できるようになることです。この点において、Vimのテキスト操作機能は、もう一つの有名なコマンドラインエディタであるEmacsに匹敵します。(ただし、一方のエディタはEscキーを、もう一方のエディタはCtrlキーを消耗させます。) Vimでは、キーの「コード」を記述する際、Ctrlキーを表すために大文字のCにハイフン(C-)を付けるという慣例があります。これは必ずしも広く受け入れられているわけではありませんが、今後はこの慣例に従い、混乱を招く可能性のある箇所を明確にしていきます。 Vimで長い行を入力する場合は、テキストの折り返しを設定すると便利です。ワークフローに合わせてVimをカスタマイズするには、次の設定を検討してください。Vimのデフォルトのテキスト折り返し処理をどのように設定しますか?オンにするかオフにするか。私はオフにして、コマンドラインインターフェースの外で設定するようにしています。テキストを自動的に折り返したい場合は、コマンドラインモードで`:set wrap`を使って設定します。 Vim でテキストをデフォルトで自動折り返しするように設定しても問題ありません。これは単なる設定であり、時間の経過とともに変更される可能性があります。同様に、貼り付け、コード言語のインデント構文、Tab キーの設定(タブかスペースか?スペースの数は?)も制御できます。これらのオプションもここで確認できます。これらのデフォルトの動作オプションはすべて完全に設定・変更可能で、コマンドラインモードで操作しているときにリアルタイムで変更できます。 Vimのデフォルト設定に関するアドバイスは、コミュニティフォーラム、Vim Wiki、そしてこの記事のような記事でたくさん見つかります。ご自身のコンピューティング環境の設定に慣れている方も多いでしょうが、Vimも例外ではありません。まずは小さな変更から始め、徐々に変更を加えていくことを強くお勧めします。そうすれば、簡単に元の設定に戻せるようになります。こうすることで、プラグインの使用を避けたり、何年も全く使わずに済むかもしれません。 Vim 8.2 の分割、タグ、ターミナル 作業中のファイルを複数のビューに分割する方法は2つあります。1つは並べて表示する方法、もう1つはアプリケーションタブを使用して全画面(ウィンドウ)で切り替える方法です。アプリケーションウィンドウへのこれらの変更はコマンドモードから開始されます。コマンドモードでは、コロン(:)を使用してプロンプトを表示する必要があります。 分割された各ウィンドウには編集用のファイルが1つずつ表示され、タブを使って複数のファイルを自由に切り替えられます。画面スペースは限られているため、画面をさらに分割したい場合はタブが便利です。どのように分割するかは、完全に個人の好み次第です。ウィンドウを水平に分割するには `:sp` を、垂直に分割するには `:vs` を使用します。 Vim 8.2以降では、`:vert term`コマンドを使って垂直に分割されたターミナルシェルのサブプロセスを開き、コードの横にあるコマンドラインで操作できるようになりました。ターミナルプロセスを閉じるには、シェルセッションを終了するのと同じように`exit`と入力する必要がありますが、この分割ウィンドウとタブは通常のVimウィンドウと同じように`:q`で閉じます。 タブを初期化するには、特別な編集コマンド「:tabedit」を使用します。このコマンドは、新しく開いたタブに自動的に切り替えます。コマンドにファイル名を引数として指定すると、そのファイルを開いて編集します。ファイル名引数を省略した場合は、通常のVimウィンドウと同様に、コマンドラインモードで編集コマンド「:e filename.txt」を使用できます。次のタブ(`:tabn`)と前のタブ(`:tabp`)のコマンドを使用して、タブ間を移動できます。 split を使用するには、ショートカット Cw と、左 (h)、下 (j)、左 (k)、右 (l) などの移動方向キーの使い方を知っておく必要があります。その他のショートカットを知りたい場合は、Vim マニュアルの :help split と :help tabpage をご覧ください。 ヘルプを受ける VimtutorでVimのリファレンスマニュアルを開くこともできますが、`:help`を使ってVimのヘルプを開くと、このような記事に完全に頼ることなく、エディタでより多くの時間を過ごしてより多くの成果を得ることができます。Vimをマスターするには経験が鍵となります。Vimの多くはUnixの世界から来ているため、経験は全体的な計算の直感力を向上させるのに役立ちます。 |