Vim-クイックガイド
Vimエディターは、今日使用されている最も人気のあるテキストエディターの1つです。これはViエディターのクローンであり、BramMoolenaarによって作成されています。クロスプラットフォームエディタであり、Windows、Linux、Mac、その他のUNIXバリアントなどの最も一般的なプラットフォームで利用できます。この章では、以下の項目について説明します-
- Introduction
- Vimの機能
- なぜVimが作成されたのですか?
前書き
Vimはの頭字語です Vi IM証明した。BramMoolenaarによって書かれた無料のオープンソーステキストエディタです。UNIXバリアント用に1991年に最初にリリースされ、その主な目標は、1976年にリリースされたViエディターに拡張機能を提供することでした。
VimはクローンViエディターと見なされます。Viと同様に、コマンド中心のエディターでもあります。Vimを学ぶ利点の1つは、どこでも利用できることです。Linux、Mac、HP-UX、AIXなどのUNIXバリアントを使用すると、Vimがデフォルトで存在します。Vimには従来GUIがありませんでしたが、現在はGUIを提供するgVimと呼ばれる別のインストーラーがあります。
Vimの機能
このセクションでは、Vimの重要な機能のいくつかについて説明します-
そのメモリフットプリントは非常に低いです
コマンド中心です。いくつかのコマンドで複雑なテキスト関連のタスクを実行できます
高度な設定が可能で、シンプルなテキストファイルを使用して設定を保存します
Vimで利用できるプラグインはたくさんあります。その機能は、これらのプラグインを使用して大幅に拡張できます
複数のウィンドウをサポートします。この機能を使用すると、画面を複数のウィンドウに分割できます
複数のウィンドウと同じように、複数のバッファもサポートします
複数のファイルを操作できる複数のタブをサポートしています
Vimコマンドを繰り返し記録および再生できる記録機能をサポートしています
Vimが作成された理由
Vimは、1976年にBill Joyによって作成されたオリジナルのViエディターに基づいています。90年代には、Viは遅れをとっていませんでした。いわゆるエディター戦争がViとEmacsエディターの間に存在していました。そのため、Bramは、EmacsがVi / Vimよりも優れている理由の議論としてEmacsコミュニティが使用した多くの欠落した機能を実装しました。
Vimは軽量パッケージで、インストールはとても簡単です。この章では、以下の項目について説明します-
- Windowsプラットフォームへのインストール
- DebianベースのLinuxへのインストール
- RPMベースのLinuxへのインストール
Windowsプラットフォームへのインストール
Vimには特定の要件はありません。これは、すべての依存関係を提供する単純なソフトウェアバンドルです。
インストール
Vimをダウンロードするには、vim.orgにアクセスしてください
左ペインからダウンロードオプションをクリックします
PCをクリックします-MS-DOSおよびMS-Windowsオプション
このページから.exeインストーラーをダウンロードします。このチュートリアルを書いている時点では、インストーラーの名前はgvim80.exeでした。
インストーラーをダブルクリックし、画面の指示に従ってインストールを完了します
構成
Vimはその設定をシンプルなテキストファイル、つまり_vimrcに保存し、ユーザーのホームディレクトリの下にあります。
現在のユーザーのホームディレクトリを見つけるには、ターミナルで以下のコマンドを実行します-
$ echo %userprofile%
ホームディレクトリに移動し、_vimrcという新しいファイルを作成します。このファイルに拡張子が付いていないことを確認してください。
このファイルをテキストエディタで開き、次のテキストを入力して保存します-
set nu
これで、ファイルを開くとVimに行番号が表示されます。後でこのファイルにオプションを追加します。
DebianベースのLinuxへのインストール
Linuxプラットフォームへのインストールは、Windowsと比較して非常に簡単です。このセクションでは、DebianベースのLinuxでのインストールと構成について説明します。
インストール
ターミナルで以下のコマンドを実行します-
$ sudo apt-get update
$ sudo apt-get install vim
Vimが正しくインストールされていることを確認するには、以下のコマンドを実行します-
$ which vim
Vimバイナリの場所を出力する必要があります。私の場合は-でした
/usr/bin/vim
構成
Vimはその設定をシンプルなテキストファイル、つまり.vimrcに保存し、ユーザーのホームディレクトリの下にあります。
現在のユーザーのホームディレクトリを見つけるには、ターミナルで以下のコマンドを実行します-
$ echo $HOME
ホームディレクトリに移動し、.vimrcという新しいファイルを作成します。このファイルに拡張子が付いていないことを確認してください。
このファイルをテキストエディタで開き、次のテキストを入力して保存します-
set nu
これで、ファイルを開くとVimに行番号が表示されます。後でこのファイルにオプションを追加します。
RPMベースのLinuxへのインストール
このセクションでは、RPMベースのLinuxでのインストールと構成について説明します。
インストール
ターミナルで以下のコマンドを実行します-
$ su - $ yum install vim
Vimが正しくインストールされていることを確認するには、以下のコマンドを実行します-
$ which vim
Vimバイナリの場所を出力する必要があります。私の場合は-でした
/usr/bin/vim
構成
Vimはその設定をシンプルなテキストファイル、つまり.vimrcに保存し、ユーザーのホームディレクトリの下にあります。
現在のユーザーのホームディレクトリを見つけるには、ターミナルで以下のコマンドを実行します-
$ echo $HOME
ホームディレクトリに移動し、.vimrcという新しいファイルを作成します。このファイルに拡張子が付いていないことを確認してください。
このファイルをテキストエディタで開き、次のテキストを入力して保存します-
set nu
これで、ファイルを開くとVimに行番号が表示されます。後でこのファイルにオプションを追加します。
VimはオリジナルのViエディターのクローンです。この章では、他のViクローンについて説明します。この章の主な目的は、他のクローンと元のViエディターとの互換性を知ることです。
この章では、以下の項目について説明します-
- Vi
- Stevie
- Elvis
- nvi
- vile
- オリジナルのViとの互換性
Vi
ViはVisualの頭字語です。もともとUNIX用に作成された画面指向のテキストエディタです。Viの元のコードは1976年にBillJoyによって書かれ、BSDプラットフォームで最初にリリースされました。Viは、当時最も一般的だったedエディターの拡張機能でした。
Vimは複数のモードを導入した最初のエディターでした。テキストの編集、テキストの選択、コマンドの実行には別のモードがあります。Vimエディターはこれらすべてのモードをサポートしています。このチュートリアルの後半のセクションでは、これらのモードについて説明します。
スティービー
StevieエディターはAtariSTプラットフォーム用に開発されました。1987年にリリースされたSTEditor forVIenhusiasticの略称です。
それは非常にシンプルで、元のViエディターの非常に小さなサブセットしか提供していませんでした。ただし、AtariSTプラットフォームで移動するユーザーに使い慣れた環境を提供しました。
エルビス
Elvisの主な目的は、Stevieエディターの制限を取り除くことでした。Stevieはファイル全体をRAMにロードするために使用されていましたが、Elvisはバッファを導入することでこの制限を取り除きました。また、構文の強調表示、複数ウィンドウのサポート、ネットワークのサポート、シンプルなGUIなどの機能も追加されました。
nvi
nviは新しいViの略です。これは、カリフォルニア大学バークレー校のAT&T研究所とコンピューターサイエンス研究グループ(CSRC)の間のライセンス紛争の結果でした。Viはedエディターに基づいており、AT&Tのライセンスに基づいており、BDSでViを配布することを制限していました。したがって、彼らはViを書き直し、BSDライセンスの下でリリースしました。
Vim
VimはViの改良版であり、Viが遅れていた多くの機能が追加されました。-のような多くの便利な機能が追加されました
- 複数のウィンドウ/タブ/バッファ
- Vimスクリプト言語の紹介
- 200以上の言語の構文の強調表示
- コンパイラー、インタープリター、デバッガーとの統合
卑劣
VileはEmacsのようなViを表す略語であり、両方のエディターから人気のある機能を1つにまとめようとした試みでした。Vileの人気のある機能はほとんどありません-
- ファイルタイプごとに1つの編集モード
- Vile手続き型言語の導入
- ユーザーの選択に応じてバインドされたキーに名前付き関数
VioriginalViとの互換性
上記のエディターはViクローンと見なされますが、元のViと100%互換性があるわけではありません。以下の表は、それらの互換性に関する詳細を示しています-
クローン | Viの互換性 | ノート |
---|---|---|
スティービー | 10% | 限られた機能が一般的でした |
卑劣 | 10% | 限られた機能とViモードが一般的でした |
エルビス | 80% | より大きな機能が一般的でした |
nvi | 95% | より大きな機能が一般的でした |
Vim | 99% | いくつかの追加機能を備えたViとほぼ同じ |
このセクションから始めて、Vimで手を汚します。この章では、以下の項目について説明します-
Vimを起動する
Vimモード
新しいファイルを作成する
読み取り専用モードでファイルを表示
既存のファイルを編集する
Vimを起動する
Vimは、今日のGUIベースのエディターとは少し異なります。ターミナルだけでなくGUIからも起動して使用できます。
グラフィカルランチャーを使用する
グラフィカルランチャーからVimを起動するには、gVimアイコンをダブルクリックするだけです。次のようにエディタウィンドウが開きます-
ターミナルを使用する
ターミナルからVimを使用することは、WindowsとLinuxプラットフォームで同じです。次の手順を実行して、ターミナルからVimを起動および終了します-
ターミナルを開き、次のようにvimコマンドを入力します-
$ vim
次のようにターミナルでVimを開きます-
これを閉じるには、Escキーを押してからコロン(:)とqを押します。Vimではqコマンドはquitの略です。このコマンドは、エディター自体の左下隅に表示されます-
Vimモード
Vimは複数のモードをサポートしています。このセクションでは、日常的に使用されるいくつかの重要なモードについて説明します。
コマンドモード
これはVimが起動するデフォルトのモードです。このモードでエディタコマンドを入力できます。このモードでは、コピー、貼り付け、削除、置換など、さまざまなコマンドを使用できます。これらのコマンドについては、後のセクションで説明します。
NOTE − Here onwards, any Vim command without colon indicates that we are executing that command in command mode.
挿入モード
このモードを使用して、テキストを入力/編集できます。デフォルトコマンドから挿入モードに切り替えるには、iキーを押します。エディターの左下隅に現在のモードが表示されます。
挿入モードに入ると、任意のテキストを入力できます。下の画像はこれを示しています-
このモードからコマンドモードに戻るには、Escキーを使用します。
コマンドラインモード
このモードは、コマンドの入力にも使用されます。このモードのコマンドはコロン(:)で始まります。たとえば、前のセクションでは、このモードでquitコマンドが入力されました。コマンドモードまたは挿入モードのいずれかからこのモードに移動できます。
コマンドモードからこのモードに切り替えるには、コロンと入力するだけです。
挿入モードからこのモードに切り替えるには、エスケープを押してコロンを入力します
下の画像の左下のコロンはラインモードを示しています。
NOTE − Here onwards, any Vim command starting with colon indicates that we are executing that command in command line mode.
ビジュアルモード
このモードでは、テキストを視覚的に選択し、選択したセクションでコマンドを実行できます。
コマンドモードからビジュアルモードに切り替えるには、タイプv
他のモードからビジュアルモードに切り替えるには、最初にエスケープを押してコマンドモードに切り替え、次にvと入力してビジュアルモードに切り替えます。
下の画像では、左下隅にビジュアルモードが表示されています。
新しいファイルを作成する
以下の手順を実行して、新しいファイルを作成して保存します-
次のコマンドを実行してVimを開きます
$ vim
Vimで次のコマンドを入力します
:edit message.txt
挿入モードに切り替えます
すでに存在する場合は、ファイルをリロードします
i
テキストを入力してください
コマンドモードに切り替えます
Esc
変更をファイルに保存
:w
これで、message.txtファイルが作成されます。
Vimを終了する
:q
読み取り専用モードでファイルを開く
–Rオプションを使用して、ファイルを読み取り専用モードで開きます
$ vim -R message.txt
下の画像の左下隅は読み取り専用モードを示しています-
または、viewコマンドを使用して同じ結果を得ることができます。
$ view message.txt
既存のファイルを編集する
以下の手順を実行して、既存のファイルを編集します-
Vimを使用してファイルを開く
$ vim message.txt
挿入モードに切り替えて、そこにテキストを入力します。
i
変更を保存せずにエディターを終了する
:q!
次のコマンドを使用して、変更を保存し、エディターを終了します-
または
:wq
Vimは機能豊富なエディターであるため、Vimに関するすべてを覚えておくのは困難です。しかし、心配する必要はありません。いつでも助けを求めることができます。幸い、このヘルプはVim自体によって提供されます。
この章では、以下の項目について説明します-
- ヘルプマニュアルにアクセス
- 特定のトピックに関するヘルプ
- マニュアルでヘルプフレーズを検索
- オンラインヘルプにアクセスする
ヘルプマニュアルにアクセス
ヘルプマニュアルはVimエディター自体に付属しており、非常に包括的です。ヘルプにアクセスするには、以下のコマンドを実行します-
:help
特定のトピックに関するヘルプ
ヘルプマニュアルには、Vimに関するヘルプ全体が表示されます。しかし、もし私たちが興味があるのは特定のトピックだけだとしたらどうでしょう。Vimは、次の構文でそのためのコマンドも提供します
:help <topic-name>
上記のコマンドで、<topic-name>を関心のあるトピックに置き換えます。vimモードに関するヘルプにアクセスするには、次のコマンドを実行します
:help modes
マニュアルでヘルプフレーズを検索
特定のトピックは、その名前がわかっている場合にのみ検索できます。しかし、ヘルプトピックの正確な名前がわからない場合はどうでしょうか。その場合、以下のコマンドを使用できます-
:helpgrep <phrase>
たとえば、Vimのナビゲーションに関するヘルプにアクセスするには、以下のコマンドを実行します
:helpgrep navigation
オンラインヘルプにアクセスする
Vimはオンラインヘルプも提供しています。オンラインヘルプにアクセスするには-
訪問のvim-ヘルプURL
さらに、vim-docsドキュメントを参照することもできます
Vimには、編集機能を非常に強力にする多くのコマンドが用意されています。この章では、以下の項目について説明します-
- Insert
- Append
- 新しいラインを開く
- Substitute
- Change
- Replace
- Join
カーソルの前にテキストを挿入する
カーソルの前にテキストを挿入するには、次の手順を実行します-
- カーソルの前にテキストを挿入するには、次の手順を実行します
- 挿入モードに切り替えます
i
行頭にテキストを挿入します
行の途中にいて、現在の行の先頭にテキストを挿入して、次の手順を実行するとします。
- コマンドモードに切り替えます
Esc
- 挿入モードをアクティブにする
I
このアクションはカーソルを現在の行の先頭に移動し、Vimを挿入モードに切り替えます
カーソルの後にテキストを追加する
カーソルの後にテキストを追加するには、次の手順を実行します
- コマンドモードに切り替えて、カーソルを適切な位置に移動します
Esc
- 挿入モードに切り替えます
a
このアクションにより、カーソルが次に1位置移動し、Vimが挿入モードに切り替わります。
行末にテキストを追加
行の途中にいて、現在の行の最後にテキストを追加して、次の手順を実行するとします。
- コマンドモードに切り替えます
Esc
- 挿入モードに切り替えます
A
このアクションはカーソルを行末に移動し、Vimを挿入モードに切り替えます
カーソルの下に新しい行を開く
あなたがラインの真ん中にいて、現在のラインの下に新しいラインを開き、次のステップを実行したいとします-
- コマンドモードに切り替えます
Esc
- 挿入モードに切り替えます
o
このアクションは、現在の行の下に空白行を挿入し、Vimを挿入モードに切り替えます
カーソルの上に新しい行を開く
あなたがラインの真ん中にいて、現在のラインの上に新しいラインを開き、次のステップを実行したいとします-
- コマンドモードに切り替えます
Esc
- 挿入モードに切り替えます
o
このアクションにより、現在の行の上に空白行が挿入され、Vimが挿入モードに切り替わります。
代替テキスト
単一の文字に置き換えて、次の手順を実行するとします。
- コマンドモードに切り替えます
Esc
- カーソルを適切な位置に移動します
- 挿入モードに切り替えます
s
このアクションにより、カーソルの下の文字が削除され、挿入モードでVimが切り替わります。行全体を置き換えるには、-を使用します。
s
このアクションにより、行全体が削除され、Vimが挿入モードに切り替わります。
テキストを変更する
現在の行のテキストを変更してから、次の手順を実行するとします。
- コマンドモードに切り替えます
Esc
- 次のコマンドを実行します-
cc
これは、Sを使用した代替アクションに似ています
現在のカーソル位置からテキストを変更するには、次のコマンドを実行します
C
このアクションは、現在のカーソル位置の後のテキストを削除し、Vimを挿入モードに切り替えます。
テキストを置き換える
単一の文字を置き換えるには、次の手順を実行します-
- コマンドモードに切り替えます
Esc
- カーソルを適切な位置に移動します
- 次のコマンドを実行します-
r
- 置換する文字を入力してください。
このコマンドは挿入モードでVimを切り替えないことに注意してください
行全体を置き換えるには、-を実行します。
R
下の画像に示すように、Vimを置換モードに切り替えます-
テキストに参加する
2つの線を結合するには、次の手順を実行します-
- コマンドモードに切り替えます
Esc
- カーソルを適切な行に移動します
- 次のコマンドを実行します-
J
Vimは高度なナビゲーションを強力にサポートしています。この章では、生産性の向上に役立つ一般的なナビゲーション手法のいくつかについて説明します。
基本的なナビゲーション
基本的なナビゲーションでは、位置によって左、右、上、下にナビゲートできます。以下のコマンドを使用できます-
シニア番号 | コマンドと説明 |
---|---|
1 | h カーソルを1つ左に移動します |
2 | l カーソルを1つ右に移動します |
3 | k カーソルを上方向に1行移動します |
4 | j カーソルを下方向に1行移動します |
マルチポジションナビゲーションを実行するには、これらのコマンドでnumberを使用します。たとえば、現在の行から10行下のカーソルをナビゲートするには、次のコマンドを実行します-
10j
残りのコマンドでも数字を使用できます。
これに加えて、以下のコマンドはいくつかの便利なナビゲーションも実行します。
シニア番号 | コマンドと説明 |
---|---|
1 | 0 カーソルを現在の行の先頭に移動します |
2 | $ カーソルを現在の行の終わりに移動します |
3 | Ctrl + f ページ全体を下にスクロール |
4 | Ctrl + b ページ全体を上にスクロール |
行に移動
以下のコマンドを使用して、特定の行に移動できます-
シニア番号 | コマンドと説明 |
---|---|
1 | :n n行目にジャンプします |
2 | :0 ファイルの先頭にジャンプします |
3 | :$ ファイルの最後にジャンプします |
ワードナビゲーション
ワードナビゲーションには次のコマンドを使用できます-
シニア番号 | コマンドと説明 |
---|---|
1 | w カーソルを次の単語の先頭に移動します |
2 | e 現在の単語の末尾にカーソルを移動します |
3 | b 前の単語の先頭にカーソルを移動します |
ジャンプを使用する
Vimはジャンプリストを使用してナビゲーションを追跡します。そのリストを前後に移動できます。
ジャンプリストは、ファイル名、行番号、列番号を追跡することにより、行ったことのあるすべての場所を追跡します。
ジャンプリストを表示するには、次のコマンドを実行します-
:jumps
次のコマンドはジャンプリストに基づいています-
シニア番号 | コマンドと説明 |
---|---|
1 | Ctrl + o 前の位置に戻ります |
2 | Ctrl + i 次の位置にジャンプします |
基本的な編集については以前に見てきました。Vimの他の編集機能をいくつか理解しましょう。このセクションでは、次の項目について説明します-
- Buffer
- ファイルを交換する
- アクションの切り取り、コピー、削除、貼り付け
- 元に戻すとやり直すアクション
バッファ
バッファはVimが使用する一時メモリです。エディターでファイルを開くと、Vimはその内容をディスクドライブからロードします。これらの内容は、実際にバッファからファイルを編集しているファイルを編集するたびに、メモリ(RAM)に保存されます。編集とファイルの保存が完了すると、バッファの内容のみが適切なファイルに転送されます。
スワップ
スワップ領域は、バッファの内容を定期的に保存するためにVimによって作成されたファイルです。ファイルを編集している間、何らかの理由で変更が失われる可能性があり、Vimはデータ復旧を提供するためのスワップファイルを提供します。
スワップファイルの実際の名前を取得するには、次のコマンドを実行します-
:swapname
たとえば、私の場合、名前は次の画像に示すようにmessage.txt.swpでした-
アクションの切り取り、コピー、貼り付け
テキストに対して切り取り、コピー、貼り付けのアクションを実行することがよくあります。Vimはこれらのアクションを実行するために以下のコマンドを提供します(yはヤンクを表し、pはペーストアクションを表します)-
シニア番号 | コマンドと説明 |
---|---|
1 | x カーソル位置から文字を削除します |
2 | X カーソル位置から前の文字を削除します |
3 | y カーソル位置から1文字をコピーする |
4 | p カーソル位置の後に文字を貼り付けます |
5 | P カーソル位置の前に文字を貼り付けます |
マルチポジションコマンド
単語や文で切り取り、コピー、貼り付けのコマンドを使用することもできます。下の表はこれを示しています-
シニア番号 | コマンドと説明 |
---|---|
1 | dw カーソル位置から単語を削除する |
2 | D カーソル位置から行全体を削除します |
3 | dd 行全体を削除する |
4 | Y 行全体をコピーします |
5 | yy 行全体をコピーします |
複数行/複数単語のアクションを実行するには、コマンドで数字を使用するだけです。この構文は、他のコマンドでも使用できます。たとえば、3つの単語を削除するには、-を使用します。
3dw
元に戻す
1つまたは複数のアクションを元に戻すことができます。一度だけ元に戻すアクションを実行するには、次を実行します-
u
複数の元に戻すアクションを実行するには、同じコマンドでnumberを使用します。たとえば、以下のコマンドは最後の3つのアクションを元に戻します-
3u
これに加えて、すべてを元に戻すには、次のコマンドを実行します-
U
やり直し
やり直しは、元に戻すの適切なアクションです。コマンドのいずれかを実行して、REDOアクションを実行します。
Ctrl + r
OR
: red
検索は非常に一般的なアクションであり、私たちが最もよく使用するアクションの1つです。この章では、これらのアクションを効果的に実行できるようにするコマンドについて説明します。
この章では、以下の項目について説明します-
- 検索設定
- 現在のファイルで検索
- 複数のファイルを検索する
- ヘルプファイルで検索
関連設定の検索
インクリメンタルサーチを実行するには、次のコマンドを実行します-
:set incsearch
検索を強調表示するには、次のコマンドを実行します-
:set hlsearch
このコマンドは、現在の一致を自動的に強調表示します。たとえば、下の画像ではキツネの言葉が強調表示されています-
インクリメンタル検索とハイライト検索を無効にするには、次のコマンドを実行します-
:set noincsearch
:set nohlsearch
現在のファイルで検索
順方向に検索
次のコマンドを使用して、順方向の検索を実行します-
シニア番号 | コマンドと説明 |
---|---|
1 | /<expression> 順方向の検索式 |
2 | n 次の出現を見つけます。これは同じで、次に見つけます |
3 | N 以前の発生を検索します。これは前の検索と同じです |
4 | // 前の前方検索を繰り返します |
逆方向に検索
次のコマンドを使用して、逆方向の検索を実行します
シニア番号 | コマンドと説明 |
---|---|
1 | ?<expression> 式を逆方向に検索します |
2 | n 以前の発生を検索します。これは同じで、前を見つけます |
3 | N 次の出現を見つけます。これは次を見つけるのと同じです |
4 | ?? 前の後方検索を繰り返します |
カーソル下の単語を検索
任意の単語の下にカーソルを置き、次のコマンドを実行して検索操作を実行します-
シニア番号 | コマンドと説明 |
---|---|
1 | * 現在の単語の次の出現を検索 |
2 | # 現在の単語の以前の出現を検索 |
複数のファイルを検索する
vimgrepコマンドを使用して、複数のファイルで<expression>を検索できます。たとえば、以下のコマンドは文字列を検索します-Jarvis すべてのテキストファイルで。
:vimgrep Jarvis *.txt
次および前のオカレンスに移動するには、次のコマンドを使用する必要があることに注意してください-
シニア番号 | コマンドと説明 |
---|---|
1 | :cn 次の式の出現に移動します |
2 | :cN 前の式の出現に移動します |
Vimは非常に強力なエディターです。複数のファイル、バッファ、ウィンドウを操作するための多くの高度な機能をサポートしています。このセクションでは、次の項目について説明します-
- 複数のファイル
- 複数のバッファ
- 複数のタブ
- 複数のウィンドウ
複数のファイル
ファイルを編集していて、同じVimセッションで別のファイルを開きたいとします。その場合、Vimの編集コマンドを使用できます。以下の表は、これらのコマンドを示しています
シニア番号 | コマンドと説明 |
---|---|
1 | :e 編集のためにバッファに新しいファイルをロードします |
2 | :edit :eと同じ |
3 | :e <tab> 現在のディレクトリから編集するファイルを一覧表示します |
4 | :edit <tab> :e <tab>と同じ |
複数のバッファ
Vimバッファとは何かをすでに見てきました。Vimは複数のバッファーをサポートしています。以下のコマンドは、バッファを操作するのに役立ちます-
シニア番号 | コマンドと説明 |
---|---|
1 | :badd <file> 新しいバッファにファイルを追加します |
2 | :bN N番目のバッファに切り替えます。たとえば、3番目のバッファに切り替えるには、:b3を使用します。 |
3 | :bnext バッファリスト内の次のバッファに移動します |
4 | :bprevious バッファリスト内の前のバッファに移動します |
5 | :buffers すべてのバッファを一覧表示します |
6 | :bfirst 最初のバッファに移動します |
7 | :blast 最後のバッファに移動します |
8 | :ball すべてのバッファをロードします |
たとえば、以下のコマンドは新しいファイルをバッファに追加します-
現在、バッファには2つのファイルがあります。以下のコマンドを実行して、これを表示します-
:buffers
次の出力が表示されます-
複数のタブ
他のエディターと同様に、Vimで複数のタブを開くこともできます。以下の表は、タブ関連のコマンドについて説明しています-
シニア番号 | コマンドと説明 |
---|---|
1 | :tabnew 新しいタブを開く |
2 | :tabnew <file> タブで新しいファイルを開く |
3 | :tabclose 現在のタブを閉じる |
4 | :tabnext 次のタブに移動 |
5 | :tabprevious 前のタブに移動します |
6 | :tabfirst 最初のタブに移動します |
7 | :tablast 最後のタブに移動 |
たとえば、以下の画像は複数のタブを示しています
複数のウィンドウ
Vimでは、次のコマンドを使用して新しいウィンドウを作成できます-
シニア番号 | コマンドと説明 |
---|---|
1 | :new <file> 新しいウィンドウを開く |
2 | :new <file> 新しいウィンドウでファイルを開く |
下の画像では、次のコマンドを実行した後、現在のVimウィンドウが2つの部分に分割されていることがわかります-
$vim message.txt
:new
Vimはブックマーク機能をサポートしています。この機能を使用すると、ファイル内のナビゲーションを非常に高速にすることができます。この章では、以下の項目について説明します-
- ブックマークを作成する
- ブックマークにジャンプ
- すべてのブックマークを一覧表示
- ブックマークを削除する
- ローカルブックマーク
- グローバルブックマーク
ブックマークを作成する
ブックマークを作成するには、次のコマンドを実行します-
m{bookmark-name}
上記の例では、bookmark-nameは単一のアルファベット文字です。たとえば、以下のコマンドは名前aのブックマークを作成します。
ma
ブックマークにジャンプ
ブックマークが作成されたら、そこにジャンプできます。次のコマンドを使用してブックマークにジャンプできます-
シニア番号 | コマンドと説明 |
---|---|
1 | `{bookmark-name} ブックマークの正確な場所に移動します。この文字は逆引用符であることに注意してください |
2 | ‘{bookmark-name} ブックマーク行の先頭にジャンプします。この文字は一重引用符であることに注意してください |
すべてのブックマークを一覧表示
すべてのブックマークを一覧表示するには、次のコマンドを実行します-
:marks
下の画像では、現在のファイルのブックマークのリストが表示されています
ブックマークを削除する
ブックマークを削除するには、次のコマンドを実行します-
:delmarks {bookmark-name}
たとえば、以下のコマンドは、名前がaのブックマークを削除します。
:delmarks a
ローカルブックマークとグローバルブックマーク
複数のファイルを開いていて、開いているファイルのいずれかで特定の位置に移動したい場合は、Vimのグローバルマーク機能を使用できます。
ブックマーク名が大文字の場合、それはグローバルブックマークです。上記のコマンドは、ローカルブックマークとグローバルブックマークの両方に適用できます。
マクロは記録と再生の機能です。これをVimコマンドと組み合わせると、非常に強力な組み合わせになります。このセクションでは、次の項目について説明します-
- 録音を開始します
- Vimアクションを実行する
- 録音を停止します
- 録音を再生する
録音を開始します
録音を開始するには、qを押してから、マクロ名として小文字を押します。たとえば、以下の例では、マクロ名として「a」を使用しています。
Vimアクションを実行する
このステップでは、カット、コピー、削除、置換などのVimアクションを実行できます。次のコマンドを実行すると、これらのアクションを確認できます。
:registers
たとえば、以下のコマンドは、ヤンクアクションと削除アクションが実行されたことを示しています-
録音を停止します
アクションが完了したら、もう一度qを押して記録を停止します。これで、以下に示すように録音モードが消えます-
演奏する
以下のコマンドを実行して再生するには-
@{macro-name}
たとえば、マクロ「a」を実行するには、以下のコマンドを実行します-
@a
同じマクロを複数回再生するには、数字を使用します。たとえば、同じマクロを10回実行するには、次のコマンドを実行します-
10@a
Vimは多くのレジスタを提供します。これらのレジスタを複数のクリップボードとして使用できます。この機能は、複数のファイルを操作するときに非常に便利です。この章では、以下の項目について説明します-
- レジスターのテキストをコピーする
- レジスタからテキストを貼り付けます
- 使用可能なレジスタを一覧表示する
- レジスタタイプ
レジスターのテキストをコピーする
コピーには、通常のyankコマンド(yy)を使用でき、レジスタに格納するには、次の構文を使用できます。
“<register-name><command>
たとえば、レジスタ「a」のテキストをコピーするには、次のコマンドを使用します-
“ayy
レジスタからテキストを貼り付けます
レジスタからテキストを貼り付けるには、-を使用します
“<register-name>p
たとえば、以下のコマンドはレジスタ「a」からテキストをコピーします-
“ap
使用可能なレジスタを一覧表示する
使用可能なすべてのレジスタを一覧表示するには、次のコマンドを使用します
:registers
レジスタタイプ
Vimは以下のタイプのレジスタをサポートします-
名前のないレジスタ
名前のないレジスタは「」で示されます。Vimは、削除またはコピーされたテキストをこのレジスタに保存します
名前付きレジスタ
26個の名前付きレジスタを使用できます。azまたはAZを使用できます。デフォルトでは、vimはこれらのレジスタを使用しません。
小文字のレジスタ名を使用すると内容が上書きされ、大文字のレジスタ名を使用すると内容がそのレジスタに追加されます。
番号付きレジスタ
0から9の名前付きレジスタを使用できます。Vimはこれらのレジスタにyankanddeleteコマンドからのテキストを入力します。
- 番号付きレジスタ0には、最新のyankコマンドからのテキストが含まれています。
- 番号付きレジスター1には、最新の削除または変更コマンドによって削除されたテキストが含まれています
デフォルトのレジスタ
以下はデフォルトのレジスタです-
シニア番号 | 登録と説明 |
---|---|
1 | % 現在のファイルの名前 |
2 | # 現在のウィンドウの代替ファイルの名前 |
3 | : 最近実行されたコマンド |
4 | . 最後に挿入されたテキストが含まれます |
5 | “ 最後に使用したレジスタ |
折り畳み機能は、ファイルの内容が大きなテキストの場合に役立ちます。この機能を使用すると、選択したファイルの部分のみを表示できます。この機能は、プログラミング言語で作業するときに特に役立ちます。この章では、以下の項目について説明します-
- 折り畳み機能のアクティブ化と非アクティブ化
- さまざまなフォールドアクション
フォールドのアクティブ化と非アクティブ化
フォールドをアクティブにするには、次のコマンドを使用します-
:set foldenable
:set foldmethod = indent
フォールドを無効にするには、次のコマンドを使用します
:set nofoldenable
フォールドアクション
クローズフォールド
コードを折りたたむには、任意のメソッドに移動し、次のコマンドを実行します-
zc
たとえば、以下の画像はこのアクションの結果を示しています-
オープンフォールド
フォールドを開くには、次のコマンドを使用します-
zo
下の画像は、このアクションの結果を示しています-
すべての折り目を閉じる
すべての折り目を閉じるには、次のコマンドを実行します
zM
下の画像は、このアクションの結果を示しています
すべて展開
すべてを展開するには、次の実行を実行します-
zR
下の画像は、このアクションの結果を示しています-
UNIXのdiffコマンドと同様に、Vimを使用してdiffをより適切に表示できます。カラフルな方法で差分を表示します。この章では、以下の項目について説明します-
- Show differences between files
- Activate and deactivate diff mode
- Navigation in diff mode
- Applying changes from diff window
Show difference
To show differences between files execute below command −
$ vimdiff <file> <file>
OR
$ vim –d <file> <file>
For instance below command shows differences −
In above image, text highlighted in magenta color is common. Remaining text is highlighted in red color which indicates that there are some differences after common text.
Activate and deactivate diff mode
If you are already in vim and you want to perform diff action, then use one of the following command −
diffsplit
Use below command to perform horizontal split −
:diffsplit filename
Above images shows that we are comparing two files namely message-1.txt and message-2.txt.
Vertical diffsplit
To perform vertical split use following command −
:vert diffsplit <filename>
It opens following window −
Above images shows that we are comparing two files namely message-1.txt and message-2.txt.
Navigation in diff mode
Navigation in diff mode is little bit different. For instance, when you scroll text from one window then text from adjacent window also scrolled. This is called scrollbind. To enable this use −
:set scrollbind
To disable this use −
:set noscrollbind
If you edit file in this mode then use following command to update diff −
:diffupdate
Switch between diff window
To switch between diff windows execute following command −
Ctrl + w Ctrl + w
Please note that, we have to press Ctrl + w 2 times.
Jump to previous change
In diff window, execute following command to jump to previous change −
[c
Jump to next change
In diff window, execute following command to jump to next change −
]c
Apply changes from diff window
Applying change in current diff windows
To apply change from adjacent diff window to current diff windows execute −
:diffget
For instance, if you are in left window and you want to take change from right window to current window then you will execute above command.
Apply change from current pane to another
To apply change from current diff window to adjacent diff window execute −
:diffput
For instance, if you are in left window and you want apply change from current window to right window then you will execute above command.
Using plug-ins, we can extends the functionality of Vim. Vim supports many plug-ins and most of them are available freely. This chapter is about Vim plug-ins and we will discuss following items −
- Plug-in management
- Some useful plug-ins
Plug-in management
This section discusses plug-in management. Vim provides various plug-ins managers but we won’t be using any plug-in manager, instead we’ll be doing all these steps manually for better understanding. Once you understand these steps, you can go with plug-in manager.
Install plug-in
To install any plug-in perform following steps −
- Create .vim/bundle directory in user’s home directory
- Copy plug-in inside this directory
- Set runtimepath in vim
Let us install badwolf plug-in in Vim. It is a color scheme for vim.
$ mkdir -p ~/.vim/bundle
$ cd ~/.vim/bundle/ $ git clone https://github.com/sjl/badwolf.git
$ echo "set runtimepath^ = ~/.vim/bundle/badwolf" > ~/.vimrc
Now plug-in is installed, so we can use badwold color scheme as follows −
:colorscheme badwolf
Update plug-in
If we observe carefully, plug-in is a just collection of files and if we want to update that plug-in then just update appropriate plug-in directory from ~/.vim/bundle.
Remove plug-in
Removing plug-in in Vim is really simple. To remove plug-in perform following steps −
- Remove plug-in directory from ~/.vim/bundle
- Modify runtimepath appropriately
Some useful plug-ins
Below is list of some useful Vim plug-ins
Sr.No | Name & Description |
---|---|
1 | DumpX Disassemble C/C++ code |
2 | awk.vim Indenting for AWK script |
3 | Pathogen Vim package manager |
4 | git-switcher.vim Automatically save and load vim session based on switching of git branch |
5 | Pyflakes Provide liniting for python files |
We can configure Vim to use it as an IDE. In this section, we will discuss following items
- Syntax highlighting
- Smart indentation
- Bounce
- Execute shell commands
- Configuring ctags and csope
- Auto-completion and auto-suggestion
Syntax highlighting
Syntax highlighting is one of the important features of IDE. To enable syntax highlighting use −
:syntax on
For instance, below image show syntax highlighting for C code −
To disable syntax highlighting use −
:syntax off
When syntax highlighting is disabled, it will show following output −
Smart indentation
To perform auto and smart indentation use following commands −
: set autoindent
: set smartindent
In addition to this you can use below command to auto-indent C code −
: set cindent
Bounce
If you are using programming language which uses curly braces to combine multiple statements then % key will be your friend. This key will jump between start and end of curly braces quickly.
For instance, you are at line 11 and execute % command then it will move cursor the line 4. Below image shows this −
Execute shell commands
To execute single command from Vim editor user −
:!<command>
For instance, to execute pwd command use following syntax −
:!pwd
However, if you want to multiple shell commands then execute following command −
:shell
Above command will give you terminal access, where you can execute multiple commands. Once you are done with it, just type exit command which will return back to Vim session.
Configure ctags and cscope
Combination of ctags and csope provides many useful features like go to function definition, go to function declaration, find function calls, search file, and many more. Perform below steps to configure these tool −
- Generate tags using following command −
$ ctags <file>
This command will generate new file namely tags
- Provide tag file to vim using following command −
:set tags = tag
- Now move your cursor under function name and press Ctrl + ] to go to function definition.
- Use Ctrl + t to come back to previous position.
To install and configure cscope perform following steps −
- Install cscope
$ sudo apt-get install cscope
- Generate ctags and launch main window
$ cscope –R
- User Ctrl + d to close cscope window
Auto-completion and auto-suggesting
We can use following commands for auto-completion −
Sr.No | Command & Description |
---|---|
1 | Ctrl + x Ctrl + N Word completion |
2 | Ctrl + x Ctrl + L Line completion |
3 | Ctrl + x Ctrl + F File name completion |
Note that we have to use these commands in insert mode.
Many times we need to work with remote servers. And often we edit files from those remote servers. One of the obvious solution to edit those files is to log in to the remote sever and edit files. But sometimes it is convenient to edit those files from local machine because we might have installed and configured various plug-in on our local system. In this chapter, we will discuss following items −
- Access remote files
- Understand netread and netwrite
- Other supported protocol
Accessing remote files
Vim supports remote file editing using following syntax −
$vim scp://[email protected]/filepath
In above example vim will recognize that it has to use scp protocol and it will access file using that protocol. For instance −
$ vim scp://[email protected]//tmp/message.txt
Above command will open /tmp/message.txt file from remote-server. It will use SCP protocol and jarvis user’s credentials for authentication.
Using nread and nwrite
Vim supports nread and nwrite functionality which stands for net read and net write respectively. Previous section shows method to access remote file while launching Vim. But what if you are already in Vim? Then you can use following commands −
:Nread scp://jarvis@localhost//tmp/message.txt
In addition to reading we can also modify file on remote server directly. In that case use Nwrite command as follows −
:Nwrite scp://jarvis@localhost//tmp/message.txt
Once file is opened, you can use regular Vim commands.
Other supported protocols
In addition to SCP, Vim supports following protocols −
- FTP
- SFTP
- HTTP (read-only)
- rsync
Now we got fair idea about Vim. Let us discuss few tips and tricks of Vim to improve productivity. In this section, we will discuss following items −
- Convert spaces to tabs and vice-versa
- Highlight miss-spelled words
- Word completion
- Copy line character by character
- Indent code
- Change file format
Convert spaces to tabs and vice-versa
Convert tabs to spaces
If you are editing a file and you want to convert entered tab character to spaces then execute following command −
:set expandtab
Note that, this command will not change existing tabs to spaces. To achieve this execute following command −
:set tabstop = 4 shiftwidth = 4 expandtab
:retab
In above command we are instructing Vim to convert tabs into 4 spaces
Convert spaces to tabs
To convert spaces to tabs execute below command −
:set noexpandtab :retab!
Highlight miss-spelled words
We can instruct Vim to highlight miss-spelled words. To do this execute following command −
:set spell
Below image highlights misspelled word in Vim −
Word completion
Vim also provides word completion. For this execute following command in insert mode −
Ctrl + p
Copy character line by line
Use following command to copy and paste line character by character −
Sr.No | Command & Description |
---|---|
1 | Ctrl + y Copy and paste text located above the cursor |
2 | Ctrl + e Copy and paste text located below the cursor |
Note the we have to use these commands in insert mode.
Indent code
If you have un-indented code to indent it execute following command −
=%
For instance, if you have un-indented code like this −
Then go to line 4 and execute =% command. It will indent code like this −
Change file format
To change file format to UNIX execute following command −
:set ff = unix
To change file format to DOS execute following command −
:set ff = dos
We can personalize Vim according to our requirement. In this section, we will discuss following items −
- Configuration files
- Changing fonts
- Changing color scheme
- Personal highlighting
- Status line
Configuration files
For Vim configuration files can be at user level or global level. User specific settings will be stored in user level files while global settings will be stored in global level files.
Vimrcファイル
Global vimrc
グローバルvimrcファイルを見つけるには、エディターで次のコマンドを実行します
:echo $VIM
または
:echo \%VIM\%
Linuxではこのファイルは/ usr / share / vimディレクトリにあり、WindowではC:\ Program Files \ Vimフォルダにあります。
Local vimrc
ローカルvimrcはユーザーのホームディレクトリの下にあります。たとえば、Linuxでは/ home / <USER>ディレクトリの下にあり、WindowsではC:\ Documents and Setting \ <USER> /フォルダの下にあります。
Windowsではファイル名は_vimrcになりますが、Linuxでは.vimrcになります。
Gvimrc
Global gvimrc
Linuxではこのファイルは/ usr / share / gvimディレクトリにあり、WindowではC:\ Program Files \ Vimフォルダにあります。
Local gvimrc
ローカルgvimrcは、ユーザーのホームディレクトリの下にあります。たとえば、Linuxでは/ home / <USER>ディレクトリの下にあり、WindowsではC:\ Documents and Setting \ <USER> /フォルダの下にあります。
Windowsではファイル名は_gvimrcになりますが、Linuxでは55.gvimrcになります。
exrc
exrcファイルは下位互換性のために使用されます。vimrcまたはgvimrcファイルのいずれかが存在する場合、これらのファイルは無視されます。
Global exrc
Linuxではこのファイルは/ usr / share / vimディレクトリにあり、WindowではC:\ Program Files \ Vimフォルダにあります。
Local exrc
ローカルexrcは、ユーザーのホームディレクトリの下にあります。たとえば、Linuxでは/ home / <USER>ディレクトリにあり、WindowsではC:\ Documents and Setting \ <USER> / _exrcフォルダにあります。
フォントの変更
フォントを変更するには、gVimで次のコマンドを実行します-
:set guifont = courier
上記のコマンドはフォントを宅配便に変更します。
カラースキームを変更する
配色を変更するには、次のコマンドを実行します-
:colorscheme <tab>
タブ文字を押すと、Vimで利用可能な配色が表示されます。
個人的なハイライト
特定の列の後の文字を強調表示する
以下のコマンドを実行して、73より大きい列を強調表示します-
:match ErrorMsg /\%>73v.\+/
下の画像はこれを示しています-
以下はこのコマンドの説明です-
シニア番号 | コマンドと説明 |
---|---|
1 | \%> 列の後に一致 |
2 | 73 これは列番号です |
3 | V 仮想列でのみ機能するはずです |
4 | .\+ 1つ以上の文字に一致する |
行番号を追加する
行番号を追加するには、次のコマンドを実行します-
:set number
これを無効にするには、次のコマンドを実行します-
:set nonumber
番号幅を設定する
番号幅を設定するには、次のコマンドを実行します-
:set numberwidth = <num>
スペルチェック
スペルチェックを有効にするには、次のコマンドを実行します-
:set spell
そして、スペル言語を設定するには、次のコマンドを実行します-
:set spelllang = <language>
たとえば、ドイツ語を設定するには、次のコマンドを使用します-
:set spelllang = de
略語
略語を使用して、長い文字列のショートカットを作成できます。たとえば、以下のコマンドは「quick」という略語を作成します。
:abbr quick the quick brown fox
「quick」と入力してTabキーを押すと、「quickbrownfox」文字列に置き換えられます。
これを使用して、いくつかのタイプミスを修正できます。たとえば、以下のコマンドはこれを行います-
:abr teh the
ステータスライン
ステータス行はエディタの下部に表示されます。ステータスラインを有効にするには、次のコマンドを実行します-
:set laststatus = 2
現在のセッションでこれを削除するには、次のコマンドを実行します-
:set laststatus = 0
Vimは本当に強力なエディターであり、今では手を汚すことができます。Vimをマスターすると、生産性が大幅に向上します。Vimを使用すると、少ないコマンドで多くの複雑なタスクを解決できます。Vimの詳細については、次のドキュメントを参照してください。
Vimの公式ドキュメント
次のウェブサイトからVimの公式ドキュメントにアクセスできます-
https://www.vim.org/
Vimスクリプティングガイド
スクリプトを作成することで、vimをさらに強化できます。独自のスクリプト言語があります。詳細については、次のリンクにアクセスしてください-
https://vim.sourceforge.io/scripts/index.php
Vimプラグイン
Vimプラグインはその機能をさらに拡張し、生産性を向上させます。Vimのプラグインをインストール、構成、さらには作成することもできます。これに関するドキュメントは、公式Webサイトから参照できます。