Vi_diff
Nvim の :help
ページは、生成されており、ソースを tree-sitter-vimdoc パーサーを使って解析したものです。
Vim と Vi の違い
Vim には編集できるファイルに関してごくわずかな制限しかありません。Vi は <Nul>
文字や 128 以上の文字を扱うことができず、行の長さにも制限があり、他にも多くの制限があります。
最大行長 2147483647 文字 最大行数 2147483647 行 最大ファイルサイズ 2147483647 バイト(2 ギガバイト) (long integer が 32 ビットの場合)。64 ビット long ではさらに大きくなります。また、
スワップファイルに利用可能なディスク容量にも制限されます。
E75ファイルパスの長さ Unix および Win32: 1024 文字、それ以外: 256 文字(またはシステムがサポートする最大値)。展開された文字列オプションの長さ Unix および Win32: 1024 文字、それ以外: 256 文字 最大表示幅 Unix および Win32: 1024 文字、それ以外: 255 文字 マッピングの左辺の最大長 50 文字。異なる強調表示タイプの数: 30000 以上 Number 変数の範囲: -2147483648 から 2147483647 (64 ビットシステムではもっと大きい場合があります) tags ファイル内の 1 行の最大長: 512 バイト。
アンドゥおよびレジスタ内のテキストの情報はメモリに保持されるため、(大きな) 変更を加える際、利用可能な(仮想)メモリ量がアンドゥレベルの数とレジスタに保持できるテキストを制限します。コマンドライン履歴、Quickfix モードのエラーメッセージなど、他のものもメモリに保持されます。
様々なシステムへの対応。Vim は以下で使用できます
最新の Unix システム (BSD, Linux など)
Windows (XP SP 2 以降)
OS X
複数レベルの永続アンドゥ。
undo 'u' は時間を戻り、'
CTRL-R
' は再び進みます。オプション
'undolevels' を記憶する変更の数に設定します (デフォルトは 1000)。Vi と互換性のある 1 レベルのアンドゥには
'undolevels' を 0 に設定します。アンドゥをまったく行わない場合は -1 に設定します。バッファ内のすべての変更がアンドゥされると、そのバッファは変更されたとは見なされなくなります。<!>なしで :q で終了できます。いくつかの変更をアンドゥしてから新しい変更を行うと、Vim はアンドゥツリーに分岐を作成します。これは、テキストのあらゆる状態に戻ることができることを意味し、変更によってテキストが永久に失われる危険性はありません。
undo-tree アンドゥ情報は、
'undofile' オプションが設定されている場合、ファイルに保存されます。つまり、Vim を終了し、以前に編集したファイルを Vim で開始して、Vim を終了する前に行われた変更をアンドゥできます。
グラフィカルユーザーインターフェース (GUI)。
gui GUI のサポートが含まれています: メニュー、マウス、スクロールバーなど。独自のメニューを定義できます。特殊キーとマウスを組み合わせた CTRL/SHIFT/ALT キーのサポートが向上しました。Win32 などのさまざまなプラットフォームでサポートされています。
複数のウィンドウとバッファ。
windows.txt Vim は画面を複数のウィンドウに分割でき、それぞれ異なるバッファ、または同じバッファを異なる場所で編集できます。バッファはロード (および変更) できますが、ウィンドウには表示されません。これは隠しバッファと呼ばれます。この機能のために多くのコマンドとオプションが追加されました。Vim は複数のタブページを使用することもでき、各タブページには 1 つ以上のウィンドウがあります。タブラベル付きの行を使用して、これらのページをすばやく切り替えることができます。
tab-page
スペルチェック。
spell 'spell' オプションが設定されている場合、Vim はスペルミスを強調表示します。現在、
'spelllang' オプションで選択された約 50 の言語がサポートされています。ソースコードでは、コメントと文字列のみがスペルチェックされます。
折りたたみ。
folding 行の範囲を 1 つの「折りたたみ」行として表示できます。これにより、ファイルの概要を把握し、テキストのブロックをすばやく移動できます。折りたたみは、手動で、ファイルの構文から、インデントによって作成できます。
Diff モード。
diff-mode Vim は、差異を強調表示して、ファイルの 2 つのバージョンを表示できます。等しいテキストの部分は折りたたまれます。コマンドを使用して、テキストをあるバージョンから別のバージョンに移動できます。
プラグイン。
add-plugin 機能は、プラグインファイルを適切なディレクトリにドロップすることで拡張できます。これは、他の人が書いた Vim スクリプトを使い始める簡単な方法です。プラグインは、すべての種類のファイル、または特定のファイルタイプに対応できます。パッケージを使用すると、これがさらに簡単になります。
packages
一連のコマンドの繰り返し。
q "q{c}" は、入力された文字を名前付きレジスタ
{c}
に記録を開始します。後続の "q" は記録を停止します。その後、レジスタは "@{c}" コマンドで実行できます。これは、複雑なアクションを繰り返すのに非常に便利です。
柔軟な挿入モード。
ins-special-special 挿入モードでは、矢印キーを使用してファイル内を移動できます。これにより、アンドゥとリドゥに関する限り、挿入が 2 つの部分に分割されます。
CTRL-O
は、単一のノーマルモードコマンドを実行するために使用できます。これは、
<Esc>
を押してコマンドを入力し、
a を実行するのとほぼ同じです。
ビジュアルモード。
Visual-mode ビジュアルモードは、最初にテキストの一部を強調表示してから、それに対して何かを行うコマンドを与えるために使用できます。これは、最初にオペレーターを与えてから、操作対象のテキストの末尾に移動する (使いやすい) 代替手段です。
v および
V は、ビジュアルモードを開始するために使用されます。
v は文字に対して機能し、
V は行に対して機能します。カーソルを移動して、ビジュアル領域を拡張します。画面上で強調表示されて表示されます。"o" を入力すると、ビジュアル領域のもう一方の端を移動できます。ビジュアル領域は、演算子の影響を受ける可能性があります: d 削除 c 変更 y ヤンク > または < インデントの挿入または削除 ! 外部プログラムによるフィルタリング = インデントによるフィルタリング : ビジュアル行の
: コマンドを開始します。gq テキストを
'textwidth' 列にフォーマット J 行を結合 ~ 大文字と小文字を入れ替え u 小文字にする U 大文字にする
ブロック演算子。
visual-block ビジュアルモードでは、長方形のテキストブロックを選択できます。
CTRL-V
でビジュアルモードを開始します。ブロックは削除 ("d")、ヤンク ("y") したり、大文字と小文字を入れ替えたり ("~", "u", "U") できます。削除またはヤンクされたブロックは、"p" および "P" コマンドを使用してテキストに配置できます。
ヘルプシステム。
:help ヘルプはウィンドウに表示されます。通常のコマンドを使用して、移動したり、文字列を検索したりできます。タグを使用すると、ハイパーテキストリンクのようにヘルプファイルを移動できます。
:help コマンドは、特定のトピックに関する情報をすばやく表示するための引数を受け取ります。
<F1>
は、ヘルプシステムへのクイックアクセスです。ヘルプインデックスファイルの名前は、
'helpfile' オプションで設定できます。
コマンドラインの編集と履歴。
cmdline-editing カーソルキーを使用して、コマンドラインの任意の場所に挿入または削除できます。右/左カーソルキーを使用して、1 文字前後に移動できます。シフトキーを押しながら右/左カーソルキーを使用して、1 単語前後に移動できます。
CTRL-B
/CTRL-E を使用して、コマンドラインの先頭/末尾に移動できます。(Vi: 行の最後の文字のみを変更できます) (Vi:
<Esc>
を押すと、コマンドラインが実行されます。これはほとんどの人にとって予想外です。そのため、Vim で変更されました。ただし、
<Esc>
がマッピングの一部である場合、コマンドラインが実行されます。
<Esc>
を入力したときにも Vi の動作が必要な場合は、":cmap ^V<Esc> ^V^M" を使用してください)
cmdline-history コマンドラインは記憶されます。上/下カーソルキーを使用して、以前のコマンドラインを呼び出すことができます。
'history' オプションは、記憶される行数に設定できます。コマンドと検索パターンのために個別の履歴があります。
コマンドライン補完。
cmdline-completion コマンドライン (画面の下部) を入力している間に、
<Tab>
を入力して補完できます
例
コマンド :e<Tab>
タグ :ta scr<Tab>
オプション :set sc<Tab>
オプション値 :set hf=<Tab>
ファイル名 :e ve<Tab>
など
複数のマッチがある場合、CTRL-N
(次へ) および CTRL-P
(前へ) がマッチを順番に処理します。<Tab>
は CTRL-N
のように機能しますが、最初のマッチにラップアラウンドします。
'wildchar' オプションは、コマンドライン補完に使用する文字に設定できます。
<Tab>
がデフォルトです。
CTRL-D
は (不完全な) ワイルドカードの後に入力できます。すべてのマッチが表示されます。
CTRL-A
はすべてのマッチを挿入します。
CTRL-L
は、マッチの最長の共通部分を挿入します。
長い行のサポート。
'wrap' 'linebreak' 'wrap' オプションがオフの場合、長い行は折り返されず、一部のみが表示されます。表示されていない部分にカーソルを移動すると、画面が水平方向にスクロールします。スクロールする最小カラム数は、
'sidescroll' オプションで設定できます。左右にスクロールするには、
zh および
zl コマンドを使用できます。あるいは、
'linebreak' オプションが設定されている場合は、長い行が単語の区切りで分割されます。これにより、1行の段落を便利に編集できます(たとえば、テキストを後で DTP プログラムに読み込む場合など)。
gk および
gj コマンドでカーソルを上下に移動します。
拡張検索パターン。
pattern さまざまなテキスト項目にマッチさせるための多くの追加項目があります。例:「\n」を検索パターンで使用して、改行にマッチさせることができます。「x\{2,4}」は「x」が 2 回から 4 回出現することにマッチします。「\s」は空白文字にマッチします。
ディレクトリ、リモート、およびアーカイブのブラウジング。
netrw Vim はファイルシステムをブラウズできます。単にディレクトリを編集するだけです。通常のコマンドでリスト内を移動し、カーソルの下にあるディレクトリまたはファイルに移動するには
<Enter>
を押します。これは、ftp、http、sshなどを介したリモートファイルでも機能します。Zip および tar アーカイブもブラウズできます。
tar zip
編集、コンパイル、編集の高速化。
quickfix :make コマンドを使用してコンパイルを実行し、最初のエラーにジャンプできます。コンパイラのエラーメッセージを含むファイルが解釈されます。Vim は最初のエラーにジャンプします。
エラーファイル内の各行は、ファイル名、行番号、およびエラーメッセージについてスキャンされます。
'errorformat' オプションは、多くのコンパイラからの出力を処理するために、scanf のような文字列のリストに設定できます。
:cn コマンドを使用して次のエラーにジャンプできます。
:cl はすべてのエラーメッセージをリストします。その他のコマンドも利用可能です。
'makeef' オプションには、エラーメッセージを含むファイルの名前があります。
'makeprg' オプションには、
:make コマンドで実行されるプログラムの名前が含まれています。
'shellpipe' オプションには、コンパイラの出力をエラーファイルに入れるために使用される文字列が含まれています。
ファイル内のマッチの検索。
:vimgrep Vim は複数のファイルでパターンを検索できます。これは高度な Vim 正規表現パターンを使用し、すべてのシステムで動作し、圧縮ファイル内でも検索できます。
コメントは自動的に整形できます。
'comments' オプションは、コメントの開始と終了の文字に設定できます。これは C コードに最適ですが、電子メール(行頭の「>」)やその他の種類のテキストにも機能します。
= オペレーターを使用して、行を再インデントできます。
他の多くの言語では、自動インデントをサポートするインデントプラグインが存在します。
30.3
インクルードファイル内の単語の検索。
include-search [i コマンドを使用して、カーソル下の単語の一致を、現在のファイルとインクルードファイルで検索できます。
'include' オプションは、ファイルをインクルードするコマンドを記述するパターンに設定できます(デフォルトは C プログラム用です)。
[I コマンドはすべての一致をリストし、
[_CTRL-I コマンドは一致にジャンプします。
[d、
[D、および
[_CTRL-D コマンドは同じことを行いますが、
'define' オプションで指定されたパターンに一致する行に対してのみ行います。
自動コマンド。
autocommand ファイルの読み取り、ファイルの書き込み、別のバッファーへのジャンプなど、ファイル名に応じてコマンドを自動的に実行できます。これは、C プログラム、ドキュメント、プレーンテキスト、電子メールなどのオプションとマッピングを設定するのに役立ちます。これにより、圧縮ファイルを編集することもできます。
Viminfo。コマンドライン履歴、マーク、およびレジスターは、起動時に読み込まれるファイルに保存できます。これは、Vim を終了して再起動した後、検索コマンドまたはコマンドラインコマンドを繰り返すために使用できます。
'0' を使用して、最後に編集を停止した場所にすぐに戻ることもできます。
'viminfo' オプションを設定して、.viminfo ファイルに保存する項目を選択できます。これはデフォルトではオフになっています。
マウスのサポート。
mouse-using マウスは、GUI バージョン、Unix 用の xterm、sysmouse を使用した BSD、gpm を使用した Linux、および Win32 でサポートされています。カーソルの配置、視覚領域の選択、レジスターの貼り付けなどに使用できます。
キー名の使用。
<> key-notation 特殊キーにはすべて、
<Up>
、
<End>
などの名前が付けられるようになりました。この名前はマッピングで使用して、編集を容易にすることができます。
バイナリファイルの編集。
edit-binary Vim はバイナリファイルを編集できます。実行可能ファイルのいくつかの文字を変更しても、破損することはありません。Vim は NUL 文字を削除しません(内部的には
<NL>
として表されます)。バイナリファイルを編集するために起動する
-b コマンドライン引数。
'binary' -b で設定されたオプション。ファイルの最後の行に
<EOL>
を追加するのを防ぎます。
多言語サポート。
multi-lang 2 バイトまたはマルチバイトエンコーディングのファイルを編集できます。さまざまな言語をフォントを切り替えずに同時に編集できるように、UTF-8 がサポートされています。
UTF-8 メッセージとメニューは、さまざまな言語で利用できます。
行を超えたカーソルの移動。
'virtualedit' オプションが設定されている場合、カーソルは画面全体、テキストがない場所にも移動できます。これは、テーブルや図を簡単に編集するのに役立ちます。