Nvim の :help ページは、生成されており、ソースを tree-sitter-vimdoc パーサーで解析して作成されています。
CTRL-V を前に付けます。<Nul> 文字を挿入するには、"CTRL-V CTRL-@" または "CTRL-V 000" を使用します。一部のシステムでは、CTRL-C を挿入するには "CTRL-V 003" を使用する必要があります。注: CTRL-V がマップされている場合は、代わりに CTRL-Q を使用できる場合があります i_CTRL-Q。<Esc> または CTRL-[ 挿入モードまたは置換モードを終了し、ノーマルモードに戻ります。省略形を完了します。注: <Esc> キーが押しにくい場合は、代わりに CTRL-[ を試してください。 i_META i_ALT ALT (META) は、キーバインドされていない場合、<Esc> のように動作する場合があります。たとえば、<A-x> が挿入モードでキーバインドされていない場合、<Esc>x のように動作します。 i_CTRL-C<BS> または CTRL-H カーソルの前の文字を削除します(行の結合については、i_backspacing を参照してください)。 i_<Del> i_DEL <Del> カーソルの下の文字を削除します。カーソルが行末にあり、'backspace' オプションに "eol" (デフォルト)が含まれている場合、<EOL> を削除します。次の行が現在の行の後に追加されます。 i_CTRL-W<Tab> または CTRL-I タブを挿入します。'expandtab' オプションがオンの場合、同等の数のスペースが挿入されます(展開を避けるには CTRL-V <Tab> を使用します。CTRL-V がマップされている場合は CTRL-Q <Tab> を使用します i_CTRL-Q)。'smarttab' オプションと ins-expandtab も参照してください。 i_CTRL-J i_<NL> <NL> または CTRL-J 新しい行を開始します。 i_CTRL-M i_<CR> <CR> または CTRL-M 新しい行を開始します。 i_CTRL-K{char1} [char2] ダイグラフを入力します(ダイグラフを参照)。{char1} が特殊キーの場合、そのキーのコードが <> 形式で挿入されます。たとえば、文字列 "<S-Space>" は、<C-K><S-Space> (2 つのキー) を入力することで入力できます。どちらの文字もマッピングの対象とはみなされません。{register} i_CTRL-RCTRL-R と次の文字の間には、レジスタの名前を入力する必要があることを示すために '"' が表示されます。テキストは入力したかのように挿入されますが、マッピングと省略形は使用されません。'textwidth'、'formatoptions'、または 'autoindent' のようなオプションを設定している場合、これは挿入される内容に影響します。これは、"p" コマンドやマウスでの貼り付けとは異なります。特殊レジスタ: '"' 最後に行った削除またはヤンクのテキストを含む無名レジスタ '%' 現在のファイル名 '#' 代替ファイル名 "*" クリップボードの内容(X11: プライマリ選択) '+' クリップボードの内容 '/' 最後に行った検索パターン ':' 最後に行ったコマンドライン '.' 最後に入力したテキスト i_CTRL-R_-CTRL-R ="\<Up>" テキストを文字通りに挿入するには、CTRL-R CTRL-R を使用します。結果が List の場合、項目は行として使用されます。内部に改行を含めることもできます。結果が Float の場合、自動的に String に変換されます。append() または setline() が呼び出されると、アンドゥシーケンスが中断されます。レジスタについては、レジスタ を参照してください。CTRL-R {register} i_CTRL-R_CTRL-RCTRL-R を使用する場合と同様に動作しますが、テキストはタイプされたかのようにではなく、文字通りに挿入されます。これは、レジスタに <BS> のような文字が含まれている場合に異なります。例:レジスタ a に "ab^Hc" が含まれている場合CTRL-R a results in "ac". CTRL-R CTRL-R a results in "ab^Hc".
CTRL-R CTRL-O を使用します。'.' レジスタ(最後に入力したテキスト)は、タイプされたように挿入されます。このコマンドの後、'.' レジスタには、タイプしたかのようにレジスタからのテキストが含まれます。CTRL-O {register} i_CTRL-R_CTRL-OP のように、現在の行の上にテキストを挿入します。'.' レジスタ(最後に入力したテキスト)は、タイプされたように挿入されます。このコマンドの後、'.' レジスタには、入力されたコマンドが含まれ、テキストは含まれません。つまり、リテラル "^R^O" であり、レジスタからのテキストではありません。置換モードでは文字を置き換えません!CTRL-P {register} i_CTRL-R_CTRL-PCTRL-V の直後に入力された文字は、マッピングの対象とは見なされません。特殊キーの場合、CTRL修飾子をキーに含めることで制御文字を生成できます。キーに対応する制御文字がない場合は、そのキー表記が挿入されます。注: CTRL-V が(例えば、テキストを貼り付けるために)マッピングされている場合は、代わりに CTRL-Q を使用できることが多いですi_CTRL-Q。CTRL-V と同じように機能しますが、CTRL修飾子をキーに含めようとしないでください。CTRL-X モードに入ります。これは、単語を補完したり、ウィンドウをスクロールしたりするためのコマンドが与えられるサブモードです。i_CTRL-X および ins-completion を参照してください。CTRL-E と CTRL-Y では、長い行から文字をコピーできるように、'textwidth' は使用されないことに注意してください。CTRL-_ は、入力したテキストの最後にカーソルを移動します。CTRL-^ 入力言語文字の使用を切り替えます。言語 :lmap マッピングが定義されている場合CTRL-W および CTRL-U は開始位置で一度停止する<EOL> が事実上削除されます。CTRL-V を使用すると、文字の10進数、8進数、または16進数の値を直接入力できます。この方法で、改行(<NL>、値10)を除く任意の文字を入力できます。文字値を入力する方法は5つあります。<C-V>032と入力します。先頭のゼロを省略できます。その場合、数字の後にタイプされた文字は数字以外である必要があります。これは他のモードでも同様です。そのモードで無効な文字を入力するとすぐに、その前の値が使用され、「無効な」文字は通常の方法で処理されます。<NL> であり、内部で <Nul> 文字を表すために使用されます。バッファをファイルに書き込むと、<NL> 文字は <Nul> に変換されます。<NL> 文字は各行の末尾に書き込まれます。したがって、<NL> 文字をファイルに挿入したい場合は、改行する必要があります。'fileformat' も参照してください。CTRL-X が押された後、各 CTRL-E (CTRL-Y) は、ファイル内の現在のカーソルの位置から移動しない限り、ウィンドウを1行上 (下) にスクロールします。別のキーが押されるとすぐに、CTRL-X モードは終了し、そのキーは挿入モードとして解釈されます。CTRL-O を使用できます。<Up> カーソルを1行上に移動します<Down> カーソルを1行下に移動します i_<Down><Up> カーソルを1行上に移動し、挿入開始列に移動します i_CTRL-G_<Up>CTRL-K カーソルを1行上に移動し、挿入開始列に移動します i_CTRL-G_CTRL-K<Down> カーソルを1行下に移動し、挿入開始列に移動します i_CTRL-G_<Down> CTRL-G j カーソルを1行下に移動し、挿入開始列に移動します i_CTRL-G_j CTRL-G CTRL-J カーソルを1行下に移動し、挿入開始列に移動します i_CTRL-G_CTRL-J <Left> カーソルを1文字左に移動します i_<Left><Right> カーソルを1文字右に移動します i_<Right><S-Left> カーソルを1単語前に移動します("b" コマンドと同様)i_<S-Left><C-Left> カーソルを1単語前に移動します("b" コマンドと同様)i_<C-Left><S-Right> カーソルを1単語先に移動します("w" コマンドと同様)i_<S-Right> <C-Right> カーソルを1単語先に移動します("w" コマンドと同様)i_<C-Right> <Home> カーソルを行の先頭文字に移動します i_<Home><End> カーソルを行の最後の文字の後に移動します i_<End><C-Home> カーソルをファイルの先頭文字に移動します i_<C-Home><C-End> カーソルをファイルの最後の文字の後に移動します i_<C-End><LeftMouse> カーソルをマウスのクリック位置に移動します i_<LeftMouse><S-Up> ウィンドウを1ページ上に移動します i_<S-Up><PageUp> ウィンドウを1ページ上に移動します i_<PageUp><S-Down> ウィンドウを1ページ下に移動します i_<S-Down><PageDown> ウィンドウを1ページ下に移動します i_<PageDown><ScrollWheelDown> ウィンドウを3行下に移動 i_<ScrollWheelDown> <S-ScrollWheelDown> ウィンドウを1ページ下に移動 i_<S-ScrollWheelDown><ScrollWheelUp> ウィンドウを3行上に移動 i_<ScrollWheelUp><S-ScrollWheelUp> ウィンドウを1ページ上に移動 i_<S-ScrollWheelUp><ScrollWheelLeft> ウィンドウを6列左に移動 i_<ScrollWheelLeft> <S-ScrollWheelLeft> ウィンドウを1ページ左に移動 i_<S-ScrollWheelLeft><ScrollWheelRight> ウィンドウを6列右に移動 i_<ScrollWheelRight> <S-ScrollWheelRight> ウィンドウを1ページ右に移動 i_<S-ScrollWheelRight>CTRL-\ CTRL-O は CTRL-O と同様だが、カーソルを移動しない i_CTRL-\_CTRL-OCTRL-O コマンドには、時々副作用があります。カーソルが行末を超えていた場合、その行の最後の文字に移動します。マッピングでは、<Esc> を使う方が良いことがよくあります。(まずテキストに「x」を挿入し、<Esc> を押すと、常にカーソルがその上に移動します。)または、CTRL-\ CTRL-O を使用しますが、その場合、カーソルが行末を超えている可能性があることに注意してください。CTRL-\ CTRL-O に続くコマンドはカーソルを移動させることができ、元の位置に戻らないことに注意してください。CTRL-O コマンドはノーマルモードに移動します。その後、コマンドを使用して挿入モードに戻ると、通常はネストされません。したがって、「a<C-O>a」と入力してから <Esc> を押してノーマルモードに戻る場合、<Esc> を2回入力する必要はありません。例外は、コマンドを入力しない場合、たとえば、マッピングを実行したりスクリプトをソースしたりする場合です。これにより、挿入モードに一時的に切り替わるマッピングが機能します。CTRL-O の後のコマンドの効果を繰り返すのが非常に複雑なためです。CTRL-G u の使用例:inoremap <C-H> <C-G>u<C-H>これにより、バックスペースキーが新しいアンドゥシーケンスを開始するように再定義されます。これで、
CTRL-O u で、バックスペースキーの効果をアンドゥできます。その前にタイプした内容を変更する必要はありません。別の例:inoremap <CR> <C-]><C-G>u<CR>これにより、各改行で新しいアンドゥブロックが開始されます。また、この前に省略形が展開されます。
CTRL-G U の使用例inoremap <Left> <C-G>U<Left>
inoremap <Right> <C-G>U<Right>
inoremap <expr> <Home> col('.') == match(getline('.'), '\S') + 1 ?
\ repeat('<C-G>U<Left>', col('.') - 1) :
\ (col('.') < match(getline('.'), '\S') ?
\ repeat('<C-G>U<Right>', match(getline('.'), '\S') + 0) :
\ repeat('<C-G>U<Left>', col('.') - 1 - match(getline('.'), '\S')))
inoremap <expr> <End> repeat('<C-G>U<Right>', col('$') - col('.'))
inoremap ( ()<C-G>U<Left>これにより、挿入モードでカーソルキーを使用できるようになります。新しいアンドゥブロックを開始しないため、.(リドゥ)が期待どおりに機能します。また、次のようなテキストを入力します(上記の「(」のマッピングを使用)。CTRL-O を使用すると、アンドゥが分割されます。その前後にタイプされたテキストは個別にアンドゥされます。これを避けたい場合(たとえば、マッピングで)、CTRL-R = i_CTRL-R を使用できる場合があります。たとえば、関数を呼び出す場合。:imap <F2> <C-R>=MyFunc()<CR>'whichwrap' オプションが適切に設定されている場合、行の最初/最後の文字の
<Left> キーと <Right> キーは、カーソルを前/次の行にラップします。CTRL-G j および CTRL-G k コマンドを使用して、列の前にテキストを挿入できます。例int i; int j;カーソルを最初の「int」に置き、「istatic
<C-G>j 」と入力します。結果は次のようになります。static int i;
int j;すべての行の列の前に同じテキストを挿入する場合は、Visual ブロックコマンド「I」 v_b_I を使用します。<Tab> を入力する場合は、最初に CTRL-V を入力します(CTRL-V がマッピングされている場合は CTRL-Q を使用します i_CTRL-Q)。'expandtab' オプションは、デフォルトではオフになっています。置換モードでは、1つの文字が複数のスペースで置き換えられることに注意してください。この結果、行の文字数が増加します。バックスペースは、一度に1つのスペースを削除します。バックスペースで戻ったスペース(最後のスペース)に対してのみ、元の文字が戻されます。<Tab> は行の先頭に 'shiftwidth' ポジションを挿入し、他の場所に 'tabstop' ポジションを挿入します。つまり、<Tab> 文字の代わりにスペースが挿入されることがよくあります。'smarttab' がオフの場合、<Tab> は常に 'tabstop' ポジションを挿入し、'shiftwidth' は「>>」などの場合にのみ使用されます。<Tab> は 'softtabstop' ポジションを挿入し、空白を削除するために使用される <BS> は 'softtabstop' ポジションを削除します。これは、'tabstop' が 'softtabstop' に設定されているように感じますが、実際の <Tab> 文字は 'tabstop' ポジションを取得するため、他のアプリケーションで使用した場合でも、ファイルは正しく表示されます。<BS> は、前に挿入された文字がスペースの場合を除き、前の 'softtabstop' 位置に移動するためにできるだけ多くの空白を削除しようとします。この場合、カーソルの前の文字のみを削除します。そうしないと、カーソルの前の1つの文字を常に削除することはできません。まず 'softtabstop' 文字を削除してから、必要な場所に移動するために余分なスペースを入力する必要があります。<NL> を入力すると、改行が挿入され、文字は削除されません。<Tab> 文字には注意してください。その場所に通常の印刷文字を入力すると、文字数は同じままですが、列数は小さくなります。<BS>, CTRL-W, または CTRL-Uを使用)、何が起こるかというと、変更が削除されます。置き換えられた文字が復元されます。既存のテキストを超えて入力した場合、追加した文字は削除されます。これは事実上、文字ごとのアンドゥです。<Tab> は1つの文字を複数のスペースで置き換えます。この結果、行の文字数が増加します。バックスペースは、一度に1つのスペースを削除します。バックスペースで戻ったスペース(最後のスペース)に対してのみ、元の文字が戻されます。<Tab> を入力すると、複数の通常の文字が置き換えられる可能性があり、<Tab> の上に文字を入力すると、<Tab> が以前と同じ場所に並ぶため、何も置き換えられない場合があります。<NL>を入力しても、ファイルの後半の文字が移動して見えることはありません。現在の行の残りの部分は<NL>で置き換えられ(つまり、削除され)、置き換えは次の行で継続されます。ファイルの末尾を超えない限り、新しい行は挿入されません。CTRL-TとCTRL-Dを使用すると、興味深い効果が見られます。カーソルの前の文字は通常どおり横にシフトしますが、行の後ろの文字は静止したままです。CTRL-Tは、シフトされた文字の下に古い行の一部を隠しますが、CTRL-Dはそれらを再び表示します。<BS>などを使用すると、置き換えられた文字が元に戻ります。これは、'smartindent'、CTRL-T、CTRL-D、'expandtab'、'smarttab'、'softtabstop'などと組み合わせて使用できます。<Tab>区切りの列を編集したり、すべての列を揃えたまま新しいデータを入力したりするのに非常に役立ちます。CTRL-NとCTRL-Pを除き、CTRL-Xモードで実行されます。これは、挿入モードと置換モードのサブモードです。CTRL-XとCTRL-Xコマンドの1つを入力すると、CTRL-Xモードに入ります。有効なCTRL-Xモードコマンドではないキーを入力すると、CTRL-Xモードを終了します。有効なキーは、CTRL-Xコマンド自体、CTRL-N(次へ)、およびCTRL-P(前へ)です。CTRL-Yを使用して補完を停止し、現在選択されているエントリを受け入れることができます。CTRL-Yは挿入されません。スペース、Enter、またはその他の印刷不可能な文字を入力すると、補完モードを終了し、入力した文字が挿入されます。CTRL-Xモードで有効なキーはマップされません。これにより、:map <C-F> <C-X><C-F>が機能します。CTRL-Xモードを終了するキー(有効なCTRL-Xモードコマンドではないキー)はマップされます。また、'complete'を使用して補完を行う場合、マッピングは通常どおり適用されます。:inoremap <C-]> <C-X><C-]> :inoremap <C-F> <C-X><C-F> :inoremap <C-D> <C-X><C-D> :inoremap <C-L> <C-X><C-L>特殊なケースとして、レジスタ挿入を実行するために
CTRL-Rを入力しても(i_CTRL-Rを参照)、CTRL-Xモードは終了しません。これは主に、次の操作を決定するために '=' レジスタを使用して関数を呼び出すことができるようにするためです。レジスタの内容(または '=' レジスタ評価の結果)が有効なCTRL-Xモードキーではない場合、これらのキーが入力されたかのようにCTRL-Xモードは終了します。<Tab>を実際に挿入するか、CTRL-N補完操作を開始/継続します。function! CleverTab()
if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'
return "\<Tab>"
else
return "\<C-N>"
endif
endfunction
inoremap <Tab> <C-R>=CleverTab()<CR>行全体の補完 compl-whole-lineCTRL-L カーソルより前の現在の行と同じ文字で始まる行を後方に検索します。インデントは無視されます。一致する行がカーソルの前に挿入されます。'complete'オプションは、一致するバッファを検索するために使用されます。ロード済みとアンロード済みの両方のバッファが使用されます。CTRL-LまたはCTRL-P 次の一致する行を後方に検索します。この行は、以前の一致する行を置き換えます。CTRL-N 次の一致する行を前方に検索します。この行は、以前の一致する行を置き換えます。CTRL-X CTRL-L 行を展開した後、ダブルCTRL-Xが使用されない限り、CTRL-X CTRL-Lを再度入力して、その行の次の行をさらに取得できます。ロードされたバッファでのみ機能します。CTRL-P カーソルの前のキーワードで始まる単語を後方に検索します。見つかったキーワードがカーソルの前に挿入されます。CTRL-N 次の一致するキーワードを前方に検索します。このキーワードは、以前の一致するキーワードを置き換えます。CTRL-P 次の一致するキーワードを後方に検索します。このキーワードは、以前の一致するキーワードを置き換えます。CTRL-X CTRL-N または CTRL-X CTRL-P ダブルCTRL-Xが使用されない限り、CTRL-X CTRL-NまたはCTRL-X CTRL-Pをさらに使用すると、他のコンテキストで以前の展開に続く単語がコピーされます。CTRL-NとCTRL-Pで異なる一致が挿入されます(一致するキーワードが1つしかない場合を除く)。CTRL-X CTRL-PまたはCTRL-X CTRL-Nを使用して、他のコンテキストで展開の後に続く単語を取得できます。これらのシーケンスは、展開されたテキストを検索し、単語を追加してさらに展開します。これは、複雑な単語のシーケンスを繰り返す必要がある場合に役立ちます。CTRL-PとCTRL-Nは少なくとも2文字の文字列のみを検索しますが、CTRL-X CTRL-PとCTRL-X CTRL-Nを使用して、1文字だけの単語を展開できます。たとえば、Méxicoを取得するには、M^N^P^X^P^X^Pと入力できます。CTRL-Nは展開を開始し、次の2つのCTRL-X CTRL-Pは、単一文字の "M"を取り戻し、単語"é"と";xico"を取得します。CTRL-X CTRL-PまたはCTRL-X CTRL-Nは、この単語で始まる行を検索します。CTRL-K 'dictionary'オプションで指定されたファイルで、カーソルの前のキーワードで始まる単語を検索します。これはCTRL-Nに似ていますが、現在のファイルではなく、辞書ファイルのみが検索されます。見つかったキーワードがカーソルの前に挿入されます。最初の一致が使用される前にすべての一致が見つかるため、これは非常に遅くなる可能性があります。デフォルトでは、'dictionary'オプションは空です。単語リストを見つけるための提案については、'dictionary'オプションを参照してください。'ignorecase'、'smartcase'、'infercase'が適用されます。CTRL-KまたはCTRL-N 次の一致するキーワードを前方に検索します。このキーワードは、以前の一致するキーワードを置き換えます。CTRL-P 次の一致するキーワードを後方に検索します。このキーワードは、以前の一致するキーワードを置き換えます。CTRL-T CTRL-X CTRL-Kと同じように動作しますが、特別な方法で動作します。'dictionary'の代わりに'thesaurus'オプションを使用します。シソーラスファイルで一致が見つかった場合、単語を補完しなくても、同じ行の残りのすべての単語が一致として含まれます。したがって、単語を完全に置き換えることができます。CTRL-TまたはCTRL-N 次の一致するキーワードを前方に検索します。このキーワードは、以前の一致するキーワードを置き換えます。CTRL-P 次の一致するキーワードを後方に検索します。このキーワードは、以前の一致するキーワードを置き換えます。angry furious mad enraged「ang」という文字の後にカーソルを置き、
CTRL-X CTRL-Tを入力すると、「angry」という単語が補完されます。後続のキーを押すと、単語が「furious」、「mad」などに変更されます。func Thesaur(findstart, base)
if a:findstart
return searchpos('\<', 'bnW', line('.'))[1] - 1
endif
let res = []
let h = ''
for l in systemlist('aiksaurus ' .. shellescape(a:base))
if l[:3] == '=== '
let h = '(' .. substitute(l[4:], ' =*$', ')', '')
elseif l ==# 'Alphabetically similar known words are: '
let h = "\U0001f52e"
elseif l[0] =~ '\a' || (h ==# "\U0001f52e" && l[0] ==# "\t")
call extend(res, map(split(substitute(l, '^\t', '', ''), ', '), {_, val -> {'word': val, 'menu': h}}))
endif
endfor
return res
endfunc
if exists('+thesaurusfunc')
set thesaurusfunc=Thesaur
endifカレントファイルおよびインクルードファイル内のキーワード補完 compl-keywordCTRL-I カーソルの前にある文字と同じ文字で始まる、カレントファイルおよびインクルードファイル内の最初のキーワードを検索します。一致したキーワードがカーソルの前に挿入されます。CTRL-N 次の一致するキーワードを前方検索します。このキーワードは、以前一致したキーワードを置き換えます。注意: CTRL-I は <Tab> と同じです。これは補完が成功した後にタイプされる可能性が高いため、CTRL-I は次の一致を検索するために使用されません。CTRL-P 前の一致するキーワードを後方検索します。このキーワードは、以前一致したキーワードを置き換えます。CTRL-X CTRL-I CTRL-X CTRL-I をさらに使用すると、ダブル CTRL-X を使用しない限り、前の展開に続く単語が他のコンテキストでコピーされます。CTRL-] カーソルの前にある文字と同じ文字で始まる最初のタグを検索します。一致したタグがカーソルの前に挿入されます。タグ名にどの文字を含めるかを決定するために、アルファベット文字と ‘iskeyword’ 内の文字が使用されます(キーワードの場合と同じ)。CTRL-] も参照してください。‘showfulltag’ オプションを使用すると、タグ定義の周囲からコンテキストを追加できます。CTRL-] または CTRL-N 次の一致するタグを前方検索します。このタグは、以前一致したタグを置き換えます。CTRL-P 前の一致するタグを後方検索します。このタグは、以前一致したタグを置き換えます。CTRL-F カーソルの前にある文字と同じ文字で始まる最初のファイル名を検索します。一致したファイル名がカーソルの前に挿入されます。ファイル名にどの文字を含めるかを決定するために、アルファベット文字と ‘isfname’ 内の文字が使用されます。注意: ‘path’ オプションはここでは(まだ)使用されません。CTRL-F または CTRL-N 次の一致するファイル名を前方検索します。このファイル名は、以前一致したファイル名を置き換えます。CTRL-P 前の一致するファイル名を後方検索します。このファイル名は、以前一致したファイル名を置き換えます。CTRL-D カーソルの前にある文字と同じ文字で始まる最初の定義(またはマクロ)名を、カレントファイルおよびインクルードファイルで検索します。見つかった定義名がカーソルの前に挿入されます。CTRL-D または CTRL-N 次の一致するマクロ名を前方検索します。このマクロ名は、以前一致したマクロ名を置き換えます。CTRL-P 前の一致するマクロ名を後方検索します。このマクロ名は、以前一致したマクロ名を置き換えます。CTRL-X CTRL-D CTRL-X CTRL-D をさらに使用すると、ダブル CTRL-X を使用しない限り、前の展開に続く単語が他のコンテキストでコピーされます。CTRL-V カーソルの前にある項目の種類を推測し、最初の一致を見つけます。注意: CTRL-V がマップされている場合、i_CTRL-Q の代わりに CTRL-Q を使用できることがよくあります。CTRL-V または CTRL-N 次の一致を前方検索します。この一致は、以前の一致を置き換えます。CTRL-P 前の一致を後方検索します。この一致は、以前の一致を置き換えます。CTRL-X CTRL-V CTRL-X CTRL-V をさらに使用すると、CTRL-V と同じ動作になります。これにより、Vim コマンドの補完を行うキーをマップできます。例::imap <Tab> <C-X><C-V>ユーザー定義の補完 compl-function
CTRL-U カーソルの前にある項目の種類を推測し、最初の一致を見つけます。CTRL-U または CTRL-N 次の一致を使用します。この一致は、以前の一致を置き換えます。CTRL-P 前の一致を使用します。この一致は、以前の一致を置き換えます。CTRL-O カーソルの前にある項目の種類を推測し、最初の一致を見つけます。CTRL-O または CTRL-N 次の一致を使用します。この一致は、以前の一致を置き換えます。CTRL-P 前の一致を使用します。この一致は、以前の一致を置き換えます。CTRL-S が表示を中断します。代わりに「s」を使用してください。表示を再開するには、CTRL-Q を入力します。CTRL-S または CTRL-X s カーソルの前にある単語を特定し、それに対する最初のスペル候補を見つけます。CTRL-S または CTRL-N 次の候補を使用します。これにより、以前の候補が置き換えられます。ここでは「s」を使用できないことに注意してください。CTRL-P 前の候補を使用します。これにより、以前の候補が置き換えられます。CTRL-N 次の一致するキーワードを前方に検索します。このキーワードは、以前の一致するキーワードを置き換えます。CTRL-P 次の一致するキーワードを後方に検索します。このキーワードは、以前の一致するキーワードを置き換えます。CTRL-X CTRL-N または CTRL-X CTRL-P ダブルCTRL-Xが使用されない限り、CTRL-X CTRL-NまたはCTRL-X CTRL-Pをさらに使用すると、他のコンテキストで以前の展開に続く単語がコピーされます。local triggers = {"."}
vim.api.nvim_create_autocmd("InsertCharPre", {
buffer = vim.api.nvim_get_current_buf(),
callback = function()
if vim.fn.pumvisible() == 1 or vim.fn.state("m") == "m" then
return
end
local char = vim.v.char
if vim.list_contains(triggers, char) then
local key = vim.keycode("<C-x><C-n>")
vim.api.nvim_feedkeys(key, "m", false)
end
end
})let matches = ... list of words ...
return {'words': matches, 'refresh': 'always'}fun! CompleteMonths(findstart, base)
if a:findstart
" locate the start of the word
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '\a'
let start -= 1
endwhile
return start
else
" find months matching with "a:base"
let res = []
for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
if m =~ '^' .. a:base
call add(res, m)
endif
endfor
return res
endif
endfun
set completefunc=CompleteMonthsfun! CompleteMonths(findstart, base)
if a:findstart
" locate the start of the word
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '\a'
let start -= 1
endwhile
return start
else
" find months matching with "a:base"
for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
if m =~ '^' .. a:base
call complete_add(m)
endif
sleep 300m " simulate searching for next match
if complete_check()
break
endif
endfor
return []
endif
endfun
set completefunc=CompleteMonthsCTRL-N または CTRL-P を使用した後)。2. カーソルキーを使用して別の一致を選択した状態。一致は挿入されておらず、ポップアップメニューのエントリが強調表示されているだけです。3. 一致の一部のみが挿入され、文字が入力されたか、バックスペースキーが使用された状態。一致のリストは、カーソルの前にある内容に合わせて調整されました。CTRL-N や CTRL-P などを使用して別の一致を選択すると、最初の状態に移行します。これにより、一致のリストは変更されません。CTRL-P を使用するマッピングを使用できます。:imap <F7> <C-N><C-P>
<BS> および CTRL-H カーソルの前にある単語の1文字を削除し、一致を検索します。これにより、一致のリストが減少し、多くの場合1つのエントリになり、2番目の状態に切り替わります。特殊文字以外の文字: 一致を変更せずに補完を停止し、入力した文字を挿入します。<BS> および CTRL-H カーソルの前にある短い単語の1文字を削除し、一致を検索します。これにより、より多くの一致が見つかる可能性があります。CTRL-L 現在の一致から1文字追加し、一致の数を減らす可能性があります。印刷可能な非空白文字: この文字を追加し、一致の数を減らします。<PageUp> 数個前の一致を選択しますが、挿入しません。<PageDown> 数個後の一致を選択しますが、挿入しません。<Up> CTRL-P が使用されたかのように、前の一致を選択しますが、挿入しません。<Down> CTRL-N が使用されたかのように、次の一致を選択しますが、挿入しません。<Space> または <Tab> 一致を変更せずに補完を停止し、入力した文字を挿入します。<Enter> キーの動作は、現在の状態によって異なります: 最初の状態: テキストをそのまま使用して改行を挿入します。2番目の状態: 現在選択されている一致を挿入します。3番目の状態: テキストをそのまま使用して改行を挿入します。<Enter> キーはその一致を挿入します。別の文字を入力した場合、<Enter> は改行を挿入します。:inoremap <Down> <C-R>=pumvisible() ? "\<lt>C-N>" : "\<lt>Down>"<CR>マッピングで
<expr> を使用して、文字を入力したとき、および特定の条件が満たされたときにポップアップメニューを使用できます。たとえば、ドットを入力する場合:inoremap <expr> . MayComplete()
func MayComplete()
if (can complete)
return ".\<C-X>\<C-O>"
endif
return '.'
endfunc詳細については、:map-<expr> を参照してください。{filetype} に使用されるファイルは、'runtimepath' の autoload/{filetype}complete.vim である必要があります。したがって、「java」の場合、autoload/javacomplete.vim になります。% ctags -R -f ~/.config/nvim/systags /usr/include /usr/local/includevimrcファイルで、このtagsファイルを 'tags' オプションに追加します。
set tags+=~/.config/nvim/systags
CTRL-X CTRL-O を「.」や「->」を含まない名前の後で使用すると、tagsファイルから直接補完されます。これは、識別子(関数名を含む)に有効です。tagsファイルに表示されないローカル変数名を補完する場合は、代わりに CTRL-P を使用します。CTRL-X CTRL-O を使用すると、Vimは変数の型を認識し、そのメンバーを特定しようとします。つまり、変数に有効なメンバーのみがリストされます。CTRL-X CTRL-O は複合型に「.」または「->」を追加します。CTRL-O は、(X)HTMLファイルのさまざまな要素の補完を提供します。XHTML 1.0 Strictファイルの作成をサポートするように設計されていますが、他のバージョンのHTMLでも機能します。機能:<style> タグと含まれているCSSファイルから取得したデータを使用して、"class" および "id" 属性の値を補完します。CTRL-X CTRL-O は最後に開いたタグを閉じます。b:html_omni_flavor は任意のXMLデータを持つファイルを指すことができることに注意してください。これにより、PHP(ft-php-omni)の補完を任意のXML方言と組み合わせて使用できます(そのためのデータファイルがある場合)。この変数を設定しない場合、XHTML 1.0 Strictが使用されます。<script>タグ内、およびイベント属性の値(外部ファイルの解析を含む)で機能します。IE FF W3C Omni completion ~ +/- +/- + + ~ + + - + ~ + - - - ~ - + - - ~
$ 変数名@var タグを使用してクラスを宣言できます。/* @var $myVar myClass */ $myVar->
CTRL-X CTRL-O によって提供される補完は、コンテキストに依存します。let g:rubycomplete_buffer_loading = 1<- 上記のコンテキスト1では、Vimはバッファ全体を解析して、補完結果にクラスのリストを追加できます。この機能はデフォルトでオフになっています。有効にするには、以下を追加してください
let g:rubycomplete_classes_in_global = 1
let g:rubycomplete_rails = 1
setlocal omnifunc=syntaxcomplete#Completeこれを自動化するには、init.vim(":filetype" コマンドの後)に次のように記述します。
if has("autocmd") && exists("+omnifunc")
autocmd Filetype *
\ if &omnifunc == "" |
\ setlocal omnifunc=syntaxcomplete#Complete |
\ endif
endif上記は、特定のプラグインがそのファイルタイプにまだ存在しない場合にのみ、補完をこのスクリプトに設定します。syntax list最初に気付くことは、さまざまな構文グループがあるということです。PHP言語には、HTML、JavaScriptなど、さまざまな言語の要素を含めることができます。構文プラグインは、この場合、ファイルタイプである「php」で始まる構文グループのみを含めます。たとえば、これらの構文グループは、PHPでデフォルトで含まれています。phpEnvVar、phpIntVar、phpFunctions。
htmlArg,htmlTag,htmlTagName,javaScriptStatement,javaScriptGlobalObjectsPHPファイルを編集中にJavaScriptとHTMLのキーワード構文グループを取得するには、各言語に対して3つの異なる正規表現を使用できます。または、正規表現文字列を使用せずに、含めるグループを特定の値に制限することもできます。
let g:omni_syntax_group_include_php = 'php\w\+,javaScript\w\+,html\w\+' let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods'
let g:omni_syntax_group_include_{filetype} = 'regex,comma,separated'PHP言語には、構文を強調表示する方法を知っている膨大な数の項目があります。これらの項目は、オムニ補完リスト内で利用可能になります。let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' let g:omni_syntax_group_exclude_php = 'php\w*Constant'カンマで区切って、このリストに構文グループを必要に応じて追加します。この変数の基本的な形式は次のとおりです。
let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated'これらの変数は必要なだけ作成でき、変数名の末尾のファイルタイプのみが異なります。let g:omni_syntax_use_iskeyword = 0プラグイン開発者向けに、プラグインはパブリック関数OmniSyntaxListを公開しています。この関数を使用して、構文項目のリストを要求できます。SQLファイル(:e syntax.sql)を編集しているときは、":syntax list"コマンドを使用して、さまざまなグループと構文項目を確認できます。たとえば
syntax list次のようなデータが生成されます。
echo OmniSyntaxList( [] )sqlOperator構文グループの構文項目のみを取得するには
echo OmniSyntaxList( ['sqlOperator'] )sqlOperatorグループとsqlTypeグループの両方のすべての構文項目を取得するには
echo OmniSyntaxList( ['sqlOperator', 'sqlType'] )正規表現も使用できます
echo OmniSyntaxList( ['sql\w\+'] )プラグイン内から、通常、出力をリストに割り当てます。
let myKeywords = [] let myKeywords = OmniSyntaxList( ['sqlKeyword'] )
CTRL-X CTRL-O は最後に開いたタグを閉じます。let g:xmldata_crippled = {
\ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"],
\ 'vimxmlroot': ['tag1'],
\ 'tag1':
\ [ ['childoftag1a', 'childoftag1b'], {'attroftag1a': [],
\ 'attroftag1b': ['valueofattr1', 'valueofattr2']}],
\ 'childoftag1a':
\ [ [], {'attrofchild': ['attrofchild']}],
\ 'childoftag1b':
\ [ ['childoftag1a'], {'attrofchild': []}],
\ "vimxmltaginfo": {
\ 'tag1': ['Menu info', 'Long information visible in preview window']},
\ 'vimxmlattrinfo': {
\ 'attrofchild': ['Menu info', 'Long information visible in preview window']}}この例は "autoload/xml/crippled.vim" ファイルに置かれ、このファイルの作成を支援できます。<tag1 attroftag1b="valueofattr1">
<childoftag1a attrofchild>
& <
</childoftag1a>
<childoftag1b attrofchild="5">
<childoftag1a>
> ' "
</childoftag1a>
</childoftag1b>
</tag1>この例では、4つの特別な要素が表示されています。:XMLns xhtml10s :XMLns xsl xsl:XMLent
{name} :XMLent:XMLent xhtml10s使用方法
<|適切な XHTML タグに補完され、この状況では
<xsl:|適切な XSL タグに補完されます。
:echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
<insert> または i insert <Insert> i カーソルの前にテキストを [count] 回挿入します。挿入モードで CTRL-O を使用する場合、i_CTRL-O では count はサポートされていません。<Esc> で挿入モードを終了できます。挿入モードの他の特殊文字については、mode-ins-repl を参照してください。[count] の効果は、挿入モードが終了した後に発生します。{range} がない場合、テキストは現在の行の後ろに挿入されます。[!] を追加すると、このコマンドが実行されている間、'autoindent' が切り替わります。{range} がない場合、テキストは現在の行の前に挿入されます。[!] を追加すると、このコマンドが実行されている間、'autoindent' が切り替わります。:a|one two . :visualカーソル行の後ろに次のテキストを追加します
one two
<Esc> を入力するのと同じように機能します。オートコマンドで使用できます。例::au BufEnter scratch stopinsert
{cmd}を実行し、その標準出力をカーソルの下または指定された行の下に挿入します。コマンドの出力を格納するために一時ファイルが使用され、それがバッファに読み込まれます。'shellredir'は、コマンドの出力を保存するために使用され、stderrを含めるかどうかを設定できます。{cmd}は ":!{cmd}"のように実行され、'!'は前のコマンド:!に置き換えられます。[++opt]の可能な値については、++optを参照してください。{name}"を使用します。:read ++edit filename効果は、'fileformat'、'fileencoding'、'bomb'などのオプションが「filename」に対して検出されたものに設定されることです。単一の空行が残ることに注意してください。削除したいかもしれません。
<EOL>スタイルを設定します<CR><NL>または<NL> DOS形式 "unix" <NL> Unix形式 "mac" <CR> Mac形式<NL>は内部的に<CR>で表現されます。これは、<NUL>を表すために使用される<NL>との混同を避けるためです。CR-used-for-NLを参照してください。<EOL>のタイプを認識しようとします(file-formatsを参照)。ただし、'fileformat'オプションは変更されず、検出された形式はファイルの読み取り中にのみ使用されます。'fileencodings'でも同様のことが起こります。:r !uuencode binfile binfileこのコマンドは、「binfile」を読み込み、uuencodeして、現在のバッファに読み込みます。電子メールを編集していて、バイナリファイルを含めたい場合に便利です。
{RO} ファイルは書き込み保護されています [fifo/socket] ストリームを使用 [fifo] fifoストリームを使用 [socket] ソケットストリームを使用 [CR missing] "dos" 'fileformat'で読み込んでいて、先行するCRのないNLが見つかりました。 [NL found] "mac" 'fileformat'で読み込んでいて、NLが見つかりました("unix"形式の可能性があります) [long lines split] 少なくとも1行が2つに分割されました [NOT converted] 'fileencoding'から'encoding'への変換が必要でしたが、できませんでした [converted] 'fileencoding'から'encoding'への変換が完了しました [READ ERRORS] ファイルのすべてを読み込むことができませんでした