その他
Nvim :help
ページ群。 生成 元は ソース で、 tree-sitter-vimdoc パーサーを使用しています。
様々なコマンド
N<Del>
<Del>
数字を入力しているとき:最後の桁を削除します。
注: これに
<BS>
を使用したい場合は、次のマッピングを vimrc に追加してください
:map CTRL-V <BS> CTRL-V <Del>
:as[cii] または
ga :as :ascii ga カーソル下の文字の ASCII 値を 10 進数、16 進数、8 進数で表示します。ニーモニック: Get Ascii value (ASCII 値を取得)。
たとえば、カーソルが 'R' にある場合
<R>
82, Hex 52, Octal 122
文字が標準 ASCII 文字ではないが、
'isprint' オプションに従って印字可能な場合、印字不可能なバージョンも表示されます。
文字が 127 より大きい場合、
<M-x>
形式も表示されます。例えば
<~A> <M-^A> 129, Hex 81, Octal 201
<p>
<|~> <M-~>
254, Hex fe, Octal 376
(ここで
<p>
は特殊文字です)
ファイル内の
<Nul>
文字は内部的には
<NL>
として格納されますが、次のように表示されます
<^@> 0, Hex 00, Octal 000
文字をダイグラフとして挿入できる場合は、文字を作成するために使用できる 2 つの文字も出力します
<ö> 246, Hex 00f6, Oct 366, Digr o
これは、
CTRL-K
o : と入力することで ö を挿入できることを示しています。
g8 g8 カーソル下の文字に使用されているバイトの 16 進値を、
UTF-8 エンコーディングであると仮定して表示します。これは合成文字も表示します。
'maxcombine' の値は関係ありません。2 つの合成文字を持つ文字の例
e0 b8 81 + e0 b8 b9 + e0 b9 89
8g8 8g8 カーソル位置以降にある不正な UTF-8 バイトシーケンスを見つけます。 UTF-8 であるはずのファイルを編集しているときに、不正なバイトが含まれているために 8 ビットエンコーディングとして読み取られた場合に使用できます。ファイルの末尾を wrap しません。カーソルが不正なバイト上にある場合、またはカーソルが多バイト文字の途中にある場合、コマンドはカーソルを移動しません。
:p :pr :print E749 :[range]p[rint] [flags] [range] 行を出力します (デフォルトは現在行)。GUI では、File.Print メニューエントリを使用できます。 [flags] については
ex-flags を参照してください。
:filter コマンドを使用すると、パターンに一致する行のみを表示できます。
:[range]p[rint]
{count}
[flags] [range] (デフォルトは現在行
cmdline-ranges) から始まる
{count}
行を出力します。 [flags] については
ex-flags を参照してください。
:l :list :[range]l[ist] [count] [flags] :print と同じですが、デフォルトではタブを ">"、末尾のスペースを "-"、改行しないスペース文字を "+" として表示します。さらに
'listchars' オプションによって変更されます。 [flags] については
ex-flags を参照してください。
:# :[range]# [count] [flags] :number のシノニム。
:#! vim-shebang :#!{anything} 無視されます。そのため、Vim スクリプトを次のように開始できます
#!vim -S
let mylogbook='$HOME/logbook.md'
exe $':e {mylogbook}'
$
put ='## ' .. strftime('%d. %b %Y')
norm! o
そのスクリプトを実行可能にして実行すると、新しい日記エントリが作成されます。
:z E144 :[range]z[+-^.=][count] [range] で指定された行、または [range] がない場合は現在行の周囲にある複数行のテキストを表示します。
[count] がある場合、それが表示される行数です。 [count] がなく、ウィンドウが 1 つだけの場合は、
'scroll' オプションの値の 2 倍が使用されます。それ以外の場合は、現在のウィンドウの高さから 3 を引いた値が使用されます。これは、以下の表の "scr" の値です。
[count] がある場合、
'window' オプションはその値に設定されます。
:z は単独で使用することも、いくつかのマークのいずれかを続けることもできます。これらは以下の効果があります
マーク 最初の行 最後の行 新しいカーソル行
---- ---------- --------- ------------ + 現在行 1 scr 前方 1 scr 前方
1 scr 後方 現在行 現在行 ^ 2 scr 後方 1 scr 後方 1 scr 後方 . 1/2 scr 後方 1/2 scr 前方 1/2 scr 前方 = 1/2 scr 後方 1/2 scr 前方 現在行
マークをまったく指定しないのは "+" と同じです。マークが "=" の場合、現在行の周囲にダッシュの行が出力されます。
:z! :[range]z![+-^.=][count] ":z" と同様ですが、[count] が指定されていない場合、デフォルトは Vim ウィンドウの高さから 1 を引いた値になります。
:[range]z[!]#[+-^.=][count]
:z#":z" または ":z!" と同様ですが、行に番号を付けます。
:= := [args] [args] なしの場合:最後の行番号を出力します。 [args] ありの場合:
:lua ={expr}
と同等です。
:lua を参照してください
:{range}=
{range}
の最後の行番号を出力します。たとえば、これは現在の行番号を出力します
:.=
:norm[al][!]
{commands}
:norm :normal ノーマルモードコマンド
{commands}
を実行します。これにより、コマンドラインで入力されたノーマルモードコマンドを実行できます。
{commands}
は入力されたとおりに実行されます。アンドゥの場合、すべてのコマンドがまとめてアンドゥされます。エラーが発生すると実行が停止します。
[!] が指定されている場合、マッピングは使用されません。指定されていない場合、このコマンドが再マップ不可のマッピング (
:noremap) から呼び出されると、引数はマッピングされる可能性があります。
{commands}
は完全なコマンドである必要があります。
{commands}
がコマンドを終了しない場合、最後のコマンドは
<Esc>
または
<C-C>
が入力されたかのように中止されます。これは、挿入コマンドが完了する必要があることを意味します (挿入モードを開始するには、
:startinsert を参照)。 ":" コマンドも完了する必要があります。また、"gQ" を使用して Ex モードを開始することはできません。
":normal" がビジー状態の間、表示は更新されません。
{commands}
はスペースで始めることはできません。前に 1 (1) のカウントを付けてください。"1 " は 1 つのスペースです。
このコマンドの後に別のコマンドを続けることはできません。 '|' はコマンドの一部と見なされるためです。
代替手段として、式を引数として使用する
:execute を使用する方法があります。これにより、印字可能な文字を使用して特殊文字を表すことができます。
例
:exe "normal \<c-w>\<c-w>"
:{range}norm[al][!]
{commands}
:normal-range{range}
内の各行に対して、ノーマルモードコマンド
{commands}
を実行します。
{commands}
を実行する前に、カーソルは各行の最初の列に配置されます。それ以外は、範囲のない ":normal" コマンドと同じです。
'hidden'が設定されていない限り、現在のバッファに変更が加えられている場合は失敗します。
コマンドは、端末ではなくパイプに接続された非対話型シェルで実行されます。端末に接続された対話型シェルを実行するには、
:terminalを使用します。
バックグラウンド("&")コマンドは、stdoutまたはstderrに書き込むことはできません。ストリームはすぐに閉じられます。
E5677 代わりに
jobstart()を使用してください。
:call jobstart('foo', {'detach':1})
powershellの場合、文字列化された実行可能ファイルパスを連結するには、呼び出し演算子(&)を使用する必要があります。
:!Write-Output "1`n2" | & "C:\Windows\System32\sort.exe" /r
E34 {cmd}
内の "!" は、バックスラッシュでエスケープされていない限り、前の外部コマンドに置き換えられます(
'cpoptions'も参照)。 例:":!ls" の後に ":!echo ! \! \\!" を実行すると、"echo ls ! \!" が実行されます。
{cmd}
内の "|" はシェルに渡されます。Vimコマンドを追加するために使用することはできません。
:barを参照してください。
{cmd}
内の "%" は現在のファイル名に展開されます。
{cmd}
内の "#" は代替ファイル名に展開されます。特殊文字はエスケープされません。引用符または
shellescape()を使用してください。
:!ls "%"
:exe "!ls " .. shellescape(expand("%"))
改行文字の前にバックスラッシュがない限り、改行文字は
{cmd}
を終了します。それに続くものは、別の
:コマンドとして解釈されます。
コマンドが実行された後、現在のファイルのタイムスタンプとサイズがチェックされます
timestamp。
コマンドの出力が多すぎる場合、コマンドを迅速に実行できるように、一部の行がスキップされる場合があります。データは失われません。これは表示にのみ影響します。最後の数行は常に表示されます(スキップされません)。
Enterキーを押すプロンプトを回避するには、以下を使用します
:silent !{cmd}
:!! :!! 最後の ":!{cmd}" を繰り返します。
:redi :redir :redi[r][!] >
{file}
メッセージをファイル
{file}
にリダイレクトします。コマンドの出力であるメッセージは、リダイレクトが終了するまで、そのファイルに書き込まれます。メッセージは画面にも表示されます。 [!] が含まれている場合、既存のファイルは上書きされます。 [!] が省略され、
{file}
が存在する場合、このコマンドは失敗します。
一度にアクティブにできる ":redir" は 1 つだけです。 ":redir" を呼び出すと、新しいターゲットへのリダイレクトを開始する前に、アクティブなリダイレクトがすべて閉じられます。再帰的な使用については、
execute() を確認してください。
メッセージとコマンドが画面にエコーされないようにするには、コマンドを関数に入れて ":silent call Function()" で呼び出します。代替手段は、
'verbosefile' オプションまたは
execute() 関数です。これらは ":redir" と組み合わせて使用できます。
:redi[r] >> {file}
メッセージをファイル{file}
にリダイレクトします。 {file}
が既に存在する場合は追加します。
:redi[r] @{a-zA-Z} :redi[r] @{a-zA-Z}> メッセージをレジスタ {a-z}
にリダイレクトします。レジスタの名前が大文字 {A-Z}
で指定されている場合は、レジスタの内容に追加します。レジスタ名の後の ">" は省略可能です。 :redi[r] @{a-z}>> メッセージをレジスタ {a-z}
に追加します。
:redi[r] @*> :redi[r] @+> メッセージを選択範囲またはクリップボードにリダイレクトします。下位互換性のために、レジスタ名の後の ">" は省略できます。
quotestar および
quoteplus を参照してください。 :redi[r] @*>> :redi[r] @+>> メッセージを選択範囲またはクリップボードに追加します。
:redi[r] @"> メッセージを無名レジスタにリダイレクトします。下位互換性のために、レジスタ名の後の ">" は省略できます。 :redi[r] @">> メッセージを無名レジスタに追加します。
:redi[r] =>
{var}
メッセージを変数にリダイレクトします。変数が存在しない場合は、作成されます。変数が存在する場合は、空の文字列に初期化されます。変数は、リダイレクトが終了するまで空のままです。文字列変数のみ使用できます。リダイレクトの開始後、変数が削除またはロックされたり、変数の型が変更されたりすると、それ以降のコマンド出力メッセージでエラーが発生します。ローカル変数(関数内の l:var またはスクリプト内の s:var)を使用し、別の
:redir
によって現在の変数が終了する場合、スコープが異なり、割り当てが失敗する可能性があります。1 つのコマンドの出力を取得するには、リダイレクトの代わりに
execute() 関数を使用できます。
:redi[r] =>> {var}
メッセージを既存の変数に追加します。文字列変数のみ使用できます。
:redi[r] END メッセージのリダイレクトを終了します。
:filt :filter :filt[er][!]
{pattern}
{command}
:filt[er][!] /{pattern}/
{command}
{command}
の出力を、
{pattern}
と一致する行に制限します。たとえば、xmlファイルのみを一覧表示するには、次のようにします。
:filter /\.xml$/ oldfiles
[!] が指定されている場合、{command}
の出力を、{pattern}
と一致*しない*行に制限します。
{pattern}
は Vim の検索パターンです。/ で囲む代わりに、
'isident' で定義されている ID 以外の文字を、
{pattern}
に出現しない限り使用できます。囲み文字がない場合、パターンにバー文字を含めることはできません。
'ignorecase' は使用されません。
パターンは、行全体ではなく、出力の関連部分と照合されます。フィルタリングをサポートするコマンドは一部のみです。動作するかどうか試してみてください。フィルタリングをサポートするコマンドの一部を以下に示します。
:# - 行全体をフィルタリング
:clist - ファイル名またはモジュール名でフィルタリング
:command - コマンド名でフィルタリング
:files - ファイル名でフィルタリング
:highlight - ハイライトグループでフィルタリング
:history - 履歴コマンドでフィルタリング
:jumps - ファイル名でフィルタリング
:let - 変数名でフィルタリング
:list - 行全体をフィルタリング
:llist - ファイル名またはモジュール名でフィルタリング
:marks - 現在のファイルのテキスト、または他のファイルのファイル名でフィルタリング
:oldfiles - ファイル名でフィルタリング
:registers - レジスタの内容でフィルタリング(複数行では機能しません)
:set - オプション名でフィルタリング
通常のメッセージのみがフィルタリングされ、エラーメッセージはフィルタリングされません。
:sil :silent :silent! :sil[ent][!]
{command}
{command}
をサイレントに実行します。通常のメッセージは表示されず、メッセージ履歴にも追加されません。 [!] が追加されると、エラーメッセージもスキップされ、エラーが検出されてもコマンドとマッピングは中止されません。
v:errmsg は設定されたままです。 [!] を使用しない場合、エラーメッセージによってさらにメッセージが通常どおり表示されます。
:redir で開始されたリダイレクトは通常どおり続行されますが、わずかな違いがある場合があります。これにより、コマンドの出力を画面に表示せずにリダイレクトできます。例
:redir >/tmp/foobar
:silent g/Aap/p
:redir END
ノーマルモードコマンドをサイレントに実行するには、
:normal コマンドを使用します。たとえば、メッセージなしで文字列を検索するには、次のようにします。
:silent exe "normal /path\<CR>"
":silent!" は、失敗する可能性のあるコマンドを実行する場合に役立ちます。失敗は無視されます。例
:let v:errmsg = ""
:silent! /^begin
:if v:errmsg != ""
: ... pattern was not found
:uns :unsilent :uns[ilent]
{command}
{command}
をサイレントに実行*しません*。
:silent が使用されてこのコマンドに到達した場合にのみ違いが生じます。
:silent が使用されている場合でもメッセージを表示するために使用します。この例では、
:silent を使用してファイルの読み込みに関するメッセージを回避し、
:unsilent を使用して各ファイルの最初の行をリストできるようにしています。
:silent argdo unsilent echo expand('%') .. ": " .. getline(1)
:verb :verbose :[count]verb[ose]
{command}
'verbose' を [count] に設定して
{command}
を実行します。 [count] が省略された場合は 1 が使用されます。 ":0verbose" を使用すると、
'verbose' をゼロに設定できます。 ":silent" を追加で使用すると、メッセージは生成されますが表示されません。 ":silent" と ":verbose" の組み合わせを使用してメッセージを生成し、
v:statusmsg などでチェックできます。例
:let v:statusmsg = ""
:silent verbose runtime foobar.vim
:if v:statusmsg != ""
: " foobar.vim could not be found
:endif
別のコマンドを連結する場合、":verbose" は最初のコマンドにのみ適用されます。
:4verbose set verbose | set verbose
:verbose-cmd 'verbose' がゼロ以外の場合、Vim オプション、キーマップ、省略形、ユーザー定義関数、コマンド、ハイライトグループ、または自動コマンドの値をリストすると、最後に定義された場所も表示されます。Lua で定義されている場合、
'verbose' が設定されている場合にのみ場所が特定されます。そのため、-V1 引数を使用して nvim を起動すると、それらを確認できます。手動で定義された場合は、「最後に設定された」メッセージは表示されません。関数、ユーザーコマンド、または自動コマンドの実行中に定義された場合は、定義されたスクリプトが報告されます。
K [count]K
'keywordprg' で指定されたプログラムを実行して、カーソルの下または右にある
単語(
'iskeyword' で定義)を検索します。デフォルトは "man" です。次のように動作します。
:tabnew | terminal {program} {keyword}
特別な場合
'keywordprg' が "man" と等しい場合、"K" の前の [count] は "man" コマンドの後、キーワードの前に挿入されます。たとえば、カーソルが "mkdir" にあるときに "2K" を使用すると、次のようになります。
!man 2 mkdir
v_K
{Visual}
K "K" と同様ですが、キーワードに視覚的に強調表示されたテキストを使用します。強調表示されたテキストが 1 行以下の場合にのみ機能します。
gO gO 現在のバッファのファイルタイプ固有のナビゲーション可能な「アウトライン」を表示します。たとえば、
help バッファでは、目次が表示されます。
[N]gs
gs :sl :sleep :[N]sl[eep] [N][m] [N] 秒間、または [m] が指定されている場合は [N] ミリ秒間、何も行いません。 "gs" は常に秒を使用します。デフォルトは 1 秒です。
:sleep "sleep for one second
:5sleep "sleep for five seconds
:sleep 100m "sleep for 100 milliseconds
10gs "sleep for ten seconds
CTRL-C
で中断できます。 "gs" は "goto sleep" の略です。スリープ中は、カーソルが表示可能な位置にある場合、テキスト内に配置されます。キューに入れられたメッセージは、スリープ中に処理されます。
2. less または more のように Vim を使用する less
less または more プログラムを使用してファイルを表示する場合、構文の強調表示は行われません。そのため、代わりに Vim を使用したい場合があります。これは、シェルスクリプト "$VIMRUNTIME/scripts/less.sh" を使用することで実現できます。
このシェルスクリプトは、Vim スクリプト "$VIMRUNTIME/scripts/less.vim" を使用します。 less がサポートするコマンドをシミュレートするためのマッピングを設定します。それ以外の場合は、引き続き Vim コマンドを使用できます。
これは完璧ではありません。たとえば、短いファイルを表示する場合、Vim は引き続き画面全体を使用します。しかし、ほとんどの用途では十分に機能し、構文の強調表示が得られます。
"h" キーを押すと、使用可能なコマンドの簡単な概要が表示されます。
less を使用するときにオプションを異なる方法で設定する場合は、vimrc で LessInitFunc を定義します。次に例を示します。
func LessInitFunc()
set nocursorcolumn nocursorline
endfunc
単一行に対する動作は次のとおりです。
それ以外の場合、コメントマーカーが現在の行に追加されます(例:foo
は /*foo*/
に変換されます)。空白行は無視されます。
複数行に対する動作は次のとおりです。
それ以外の場合、影響を受けるすべての行がコメントに変換されます。空白行は空のコメントに変換されます(例:/**/
)。コメントマーカーは、最もインデントが少ない行に揃えられます。
'commentstring' の一致では、コメントマーカー内の空白は考慮されません。コメントマーカーの削除は、最初に正確に試行され、フォールバックとして空白がトリミングされたマーカーが使用されます。
gc gc-default gc{motion}
{motion}
でカバーされる行をコメント化またはコメント解除します。
o_gc o_gc-default gc カーソルの周囲にある、空白以外のコメント行の最大連続ブロックのテキストオブジェクト(例:
gcgc
はコメントブロックのコメントを解除します。
dgc
はそれを削除します)。オペレーター待機モードでのみ機能します。