Nvim の :help
ページは、生成されたもので、ソースを tree-sitter-vimdoc パーサーを使用して作成されています。
:make {arguments}エラーが生成された場合、それらはキャプチャされ、エディターは最初のエラーが発生した場所に移動します。":make" のセッション例を見てみましょう。(一般的な :make セッションでは、はるかに多くのエラーが発生し、愚かなエラーは少なくなります。) ":make" と入力すると、画面は次のようになります。
<Enter>
キーを押すと、Vimはファイル「main.c」を表示し、カーソルはエラーのある最初の行である6行目に置かれます。ファイルや行番号を指定する必要はありませんでした。Vimはエラーメッセージを見てどこに行くべきかを知っていました。+---------------------------------------------------+ |int main() | |{ | | int i=3; | cursor -> | do_sub("foo"); | | ++i; | | return (0); | |} | |} | | ~ | |(3 of 12): too many arguments to function 'do_sub' | +---------------------------------------------------+
:cnextVimは、ファイル内の最後の行である10行目にジャンプします。そこには余分な「}」があります。十分なスペースがない場合、Vimはエラーメッセージを短縮します。メッセージ全体を表示するには、次を使用します。
:cc":clist" コマンドを使用すると、すべてのエラーメッセージの概要を取得できます。出力は次のようになります。
:clist
:clist!
:cpreviousエラーリスト内を移動するためのその他のコマンド
:set makeprg=nmakeこのオプションに引数を含めることもできます。特殊文字はバックスラッシュでエスケープする必要があります。例:
:set makeprg=nmake\ -f\ project.makコマンド仕様に特別な Vim キーワードを含めることができます。% 文字は、現在のファイルの名前に展開されます。したがって、次のコマンドを実行する場合
:set makeprg=make\ %:Smain.c を編集している場合、":make" は次のコマンドを実行します。
make main.cこれはあまり便利ではないため、コマンドを少し調整し、:r (root) 修飾子を使用します。
:set makeprg=make\ %:r:S.oこれで、実行されるコマンドは次のようになります。
make main.oこれらの修飾子の詳細はこちら: ファイル名修飾子。
:colder次に、":clist" と ":cc
{nr}
" を使用して、警告のある場所にジャンプします。次のエラーリストに進むには:cnewerVimは10個のエラーリストを記憶します。
:compiler msvcこれにより、"msvc" コンパイラー用の Vim スクリプトが見つかり、適切なオプションが設定されます。独自のコンパイラーファイルを作成できます。 write-compiler-plugin を参照してください。
:cfile {filename}エラーへのジャンプは、":make" コマンドの場合と同じように機能します。
:set cindent shiftwidth=4このオプションが有効になっていると、"if (x)" などの入力をすると、次の行が自動的に1レベル深くインデントされます。
==これは現在の行をインデントします。すべての演算子と同様に、3つの使用方法があります。ビジュアルモードでは、「=」は選択した行をインデントします。便利なテキストオブジェクトは「a{」です。これは、現在の {} ブロックを選択します。したがって、カーソルがあるコードブロックを再インデントするには
=a{インデントが非常に悪いコードがある場合は、次のコマンドを使用してファイル全体を再インデントできます。
gg=Gただし、手動で慎重にインデントされたファイルではこれを行わないでください。自動インデントは優れた処理をしますが、状況によってはそれをオーバーライドする必要がある場合があります。
:set cinoptions+={2これらの項目は多数あります。cinoptions-values を参照してください。
:filetype indent on実際、これはCファイルに対して 'cindent' をオンにするよりもはるかに多くのことを行います。まず、ファイルの種類の検出を有効にします。これは、構文強調表示に使用されるものと同じです。ファイルタイプがわかると、Vimはこのタイプのファイルのインデントファイルを検索します。Vimディストリビューションには、さまざまなプログラミング言語に対応するこれらのファイルが多数含まれています。このインデントファイルは、このファイル専用の自動インデントの準備をします。
:filetype indent off特定のタイプのファイルのインデントが気に入らない場合は、これを回避する方法は次のとおりです。次の1行だけを含むファイルを作成します。
:let b:did_indent = 1次に、これを特定の名前のファイルに書き込む必要があります。
{directory}
/indent/{filetype}.vim{filetype}
は、"cpp" や "java" のようなファイルタイプの名前です。Vimが検出した正確な名前は、次のコマンドで確認できます。:set filetypeこのファイルでは、出力は次のようになります。
{filetype}
には "help" を使用します。{directory}
部分には、ランタイムディレクトリを使用する必要があります。次のコマンドの出力を参照してください。set runtimepath次に、最初の商品、つまり最初のコンマの前にある名前を使用します。したがって、出力が次のようになっている場合
{directory}
には "~/.config/nvim" を使用します。その結果、ファイル名は次のようになります。CTRL-D
および CTRL-T コマンドを使用することです。たとえば、次のように表示されるはずのシェルスクリプトを入力しているとします。:set autoindent shiftwidth=3最初に、最初の行を入力し、
<Enter>
を入力して2番目の行の入力を開始します。CTRL-T
と入力します。結果は次のようになります。CTRL-T
コマンドは、行のどこにいても、インデントに 'shiftwidth' を1つ追加します。2番目の行の入力を続け、<Enter>
を入力して3番目の行を入力します。今回はインデントはOKです。次に、<Enter>
を入力して最後の行を入力します。これで、次のようになります。CTRL-D
を押します。これにより、行のどこにいても、'shiftwidth' のインデントが1つ削除されます。ノーマルモードでは、">>" および "<<" コマンドを使用して行をシフトできます。">" と "<" は演算子であるため、インデントする行を指定する通常の3つの方法があります。便利な組み合わせは次のとおりです。>i{これにより、{} 内の現在の行ブロックに1つのインデントが追加されます。{ および } の行自体は変更されません。">a{" にはそれらが含まれます。この例では、カーソルは "printf" にあります。
<Tab>
は8つのスペースであり、4つのスペースのインデントを使用したい場合は、インデントを作成するために <Tab>
文字を使用することはできません。これを処理するには2つの方法があります。<Tab>
とスペース文字の組み合わせを使用します。<Tab>
は8つのスペースの代わりになるため、ファイル内の文字数が少なくなります。<Tab>
を挿入する方が、8つのスペースを入力するよりも速いです。バックスペースも同様に高速に機能します。<Tab>
キーが 'softtabstop' の値に設定されたタブであるかのように感じられるようにしますが、実際にはタブとスペースの組み合わせを使用するように Vim に指示します。次のコマンドを実行すると、<Tab>
キーを押すたびに、カーソルが次の4列の境界に移動します。:set softtabstop=4最初の列で開始して
<Tab>
を押すと、テキストに4つのスペースが挿入されます。2回目は、Vim が4つのスペースを取り除き、<Tab>
を挿入します(これにより、8列目に移動します)。したがって、Vim はできるだけ多くの <Tab>
を使用し、スペースで埋めます。バックスペースを使用する場合、逆方向に機能します。<BS>
は常に 'softtabstop' で指定された量を削除します。次に、できるだけ多くの <Tab>
が使用され、スペースがギャップを埋めます。以下は、<Tab>
を数回押してから <BS>
を使用した場合に何が起こるかを示しています。"." はスペースを表し、"------->" は <Tab>
を表します。<Tab>
.... <Tab>
<Tab>
-------> <Tab>
<Tab>
<Tab>
------->.... <Tab>
<Tab>
<Tab>
<BS>
-------> <Tab>
<Tab>
<Tab>
<BS>
<BS>
....<Tab>
に 'shiftwidth' を使用し、最初の空白以外の文字の後にタイプした場合は実際の <Tab>
を使用します。ただし、<BS>
は 'softtabstop' の場合のように機能しません。:set expandtabこのオプションを設定すると、
<Tab>
キーは一連のスペースを挿入します。したがって、<Tab>
文字が挿入された場合と同じ量の空白が得られますが、ファイルには実際の <Tab>
文字はありません。バックスペースキーは各スペースを個別に削除します。したがって、1つの <Tab>
を入力した後、<BS>
キーを最大8回押して元に戻す必要があります。インデントしている場合は、CTRL-D
を押す方がはるかに速くなります。:set expandtab :%retabこれで、Vim はすべてのインデントをタブではなくスペースを使用するように変更しました。ただし、空白以外の文字の後にあるすべてのタブは保持されます。これらも変換する場合は、! を追加します。
:%retab!文字列内のタブも変更する可能性があるため、これは少し危険です。これらが存在するかどうかを確認するには、次のように使用できます。
/"[^"\t]*\t[^"]*"文字列内ではハードタブを使用しないことをお勧めします。トラブルを避けるために、"\t" に置き換えてください。
:set noexpandtab :%retab!
/*
* This is a test
* of the text formatting.
*/
次に、カーソルをコメントの先頭に置いて、次のように入力して、Vim に書式設定を要求します。gq]/"gq" はテキストを書式設定する演算子です。"]/" は、コメントの末尾に移動するモーションです。結果は次のとおりです。
/*
* This is a test of the text formatting.
*/
Vim が各行の先頭を適切に処理していることに注意してください。別の方法は、ビジュアルモードで書式設定するテキストを選択し、"gq" を入力することです。/*
* This is a test of the text formatting.
*
*/
Vim は自動的にアスタリスクとスペースを挿入しました。これで、コメントテキストを入力できます。テキストが 'textwidth' より長くなると、Vim は行を分割します。ここでも、アスタリスクが自動的に挿入されます。/*
* This is a test of the text formatting.
* Typing a lot of text here will make Vim
* break
*/
これを機能させるには、'formatoptions' にいくつかのフラグが存在する必要があります。<Enter>
を入力したときにアスタリスクを挿入します o ノーマルモードで "o" または "O" を使用したときにアスタリスクを挿入します c 'textwidth' に従ってコメントテキストを分割します。:set comments=://コロンは、項目のフラグをコメントを認識するテキストから区切ります。'comments' の項目の一般的な形式は次のとおりです。
{フラグ}
:{テキスト}{フラグ}
の部分は空にできます。これらの項目のいくつかを、カンマで区切って連結できます。これにより、異なるタイプのコメントを同時に認識できます。たとえば、メールメッセージを編集しましょう。返信するとき、他の人が書いたテキストには ">" および "!" 文字が前に付いています。このコマンドは機能します。:set comments=n:>,n:!2つの項目があり、1つは ">" で始まるコメント用、もう1つは "!" で始まるコメント用です。どちらもフラグ "n" を使用します。これは、これらのコメントがネストすることを意味します。したがって、">" で始まる行には、">" の後に別のコメントがある場合があります。これにより、次のようなメッセージを書式設定できます。
:set comments=s1:/*,mb:*,ex:*/開始部分は「s1:/*」で定義されています。「s」は3つの部分からなるコメントの開始を示します。コロンは、コメントが認識されるテキスト「/*」とフラグを分離します。フラグは1つあります。「1」です。これは、Vimに中間部分が1つのスペースのオフセットを持つことを伝えます。中間部分「mb:*」は「m」で始まり、これは中間部分であることを示します。「b」フラグは、テキストの後に空白が必要であることを意味します。そうしないと、Vimは「*pointer」のようなテキストもコメントの中間部分と見なします。終了部分「ex:*/」は識別するために「e」を持ちます。「x」フラグは特別な意味を持ちます。Vimが自動的にアスタリスクを挿入した後、/を入力すると、余分なスペースが削除されることを意味します。