起動
Nvim :help
ページは、ソースからtree-sitter-vimdocパーサーを使用して生成されています。
Vimの起動
ほとんどの場合、Nvimは単一のファイルを編集するために以下のコマンドで起動されます。
nvim filename
より一般的には、Nvimは以下のコマンドで起動されます。
nvim [option | filename] ..
オプション引数とファイル名引数は混在させることができ、いくつでも指定できます。ただし、引数を取るオプションには注意してください。
編集の開始方法は、以下の項目によって決定されます。
-file --- ファイル名 1つ以上のファイル名。最初のファイルがカレントファイルとなり、バッファに読み込まれます。カーソルはバッファの最初の行に配置されます。「-」で始まるファイル名がオプションとして解釈されるのを避けるために、引数リストの前に「--」を付けてください。例えば、
nvim -- -filename
「--」以降のすべての引数はファイル名として解釈され、他のオプションや「+command」引数は続けることができません。
--
-
標準入力(stdin)のエイリアス。例:
echo text | nvim - file
「text」はバッファ1に読み込まれ、「file」はバッファ2として開かれます。ほとんどの場合(-s、-es、
--embed、--headlessを除く)、stdinがTTYでない場合、テキストとして読み込まれるため、「-」が暗黙的に指定されます。
echo text | nvim file
バッファは、保存する必要があるテキストが含まれているため、変更済みとしてマークされます(読み取り専用
-Rモードを除く)。これが気に入らない場合は、init.vimに以下の行を追加してください。
" Don't set 'modified' when reading from stdin
au StdinReadPost * set nomodified
標準入力をノーマルモードのコマンドとして読み取るには、
-sと「-」を使用します。
echo "ifoo" | nvim -s -
標準入力をExコマンドとして読み取るには、
-esまたは
-eを使用します。
echo "echo getpid()" | nvim -e - -V1
文字通り「-」という名前のファイルを開くには、「--」の後に置いてください。
echo foo | nvim -- -
-t -tag -t
{tag}
タグ。「tag」はタグファイルで検索され、関連付けられたファイルがカレントファイルになり、関連付けられたコマンドが実行されます。これは主にCプログラムで使用され、「tag」は多くの場合関数名です。その結果、その関数が含まれているファイルがカレントファイルになり、カーソルが関数の先頭に配置されます(
tagsを参照)。
-q -qf -q [errorfile] QuickFixモード。[errorfile]という名前のファイルが読み込まれ、最初のエラーが表示されます。
quickfixを参照してください。[errorfile]が指定されていない場合、ファイル名には
'errorfile'オプションが使用されます。デフォルト値については、
'errorfile'を参照してください。
(なし) 上記の4つの項目のいずれもない場合、Vimは新しいバッファの編集を開始します。これは空で、ファイル名がありません。
起動オプション オプション引数は任意の順序で指定できます。単一文字のオプションは、1つのダッシュの後に組み合わせることができます。「--」引数の後にはオプション引数を指定できません。
--help
-h --help -? -? -h 使用方法(ヘルプ)メッセージを表示して終了します。
--clean --clean Nvimのフレッシュインストールを模倣します。
ファイルおよび環境変数からの初期化をスキップします。
「-u NONE -i NONE」とは異なり、組み込みプラグインを読み込みます。
--noplugin --noplugin プラグインの読み込みをスキップします。
'loadplugins'オプションをリセットします。
-u引数もプラグインの読み込みを無効にする場合があることに注意してください。
引数 vimrcファイルの読み込み プラグインの読み込み
(なし) はい はい -u NONE いいえ いいえ -u NORC いいえ はい --noplugin はい いいえ
--startuptime
{fname}
--startuptime起動中に、タイミングメッセージをファイル
{fname}
に書き込みます。これは、
設定、プラグインの読み込み、最初のファイルを開く際に時間がかかっている場所を見つけるために使用できます。
{fname}
がすでに存在する場合、新しいメッセージが追加されます。
-+ +[num] カーソルは、編集中の最初のファイルの「num」行目に配置されます。「num」が省略されている場合、カーソルは最後の行に配置されます。
-+/ +/{pat} カーソルは、編集中の最初のファイルで「pat」を含む最初の行に配置されます(使用可能な検索パターンについては、
パターンを参照)。検索はカーソル位置から開始されます。これは最初の行、または
shadaから最後に使用されたカーソル位置です。最初の行から強制的に検索するには、「+1 +/pat」を使用します。
+{command}
-+c -c -c
{command}
{command}
は、最初のファイルが読み込まれた後(およびそのファイルの自動コマンドとモードラインが処理された後)に実行されます。「command」はExコマンドとして解釈されます。「command」にスペースが含まれている場合、二重引用符で囲む必要があります(これは使用されているシェルによって異なります)。例:
vim "+set si" main.c
vim "+find stdio.h"
vim -c "set ff=dos" -c wq mine.mak
注: Vimコマンドでは、最大10個の「+」または「-c」引数を使用できます。それらは指定された順序で実行されます。「-S」引数は「-c」引数としてもカウントされます。
--cmd
{command}
--cmd
{command}
は、vimrcファイルを処理する前に実行されます。それ以外の場合、-c
{command}
のように動作します。これらのコマンドは、「-c」コマンドとは独立して最大10個まで使用できます。
-S -S [file] 最初のファイルが読み込まれた後、VimscriptまたはLua(「.lua」)[file]を実行します。
:sourceも参照してください。[file]が指定されていない場合、デフォルトは「Session.vim」です。以下と同等です。
-c "source {file}"
「-c」と同様に繰り返すことができ、「-c」引数の10個という制限の対象となります。{file}
は「-」で始めることはできません。
-L
-L -r -r リカバリモード。ファイル名引数が指定されていない場合、既存のスワップファイルのリストが表示されます。ファイル名が指定されている場合、クラッシュした編集セッションを回復するためにスワップファイルが読み取られます。
クラッシュリカバリを参照してください。
-R -R 読み取り専用モード。
'readonly'オプションは、編集中のすべてのファイルに設定されます。バッファを編集することはできますが、誤ってファイルを上書きすることはできません。ビューモードであることを忘れて変更を加えた場合は、「:w!」のようにExコマンドに感嘆符を追加することでファイルを上書きできます。
'readonly'オプションは「:set noro」でリセットできます(オプションの章、
オプションを参照)。以降の編集は読み取り専用モードでは行われません。実行可能ファイル「view」を呼び出すと、-R引数と同じ効果があります。
'updatecount'オプションは10000に設定されます。これは、スワップファイルが自動的に更新される頻度が非常に低いことを意味します。変更を許可しないようにするには、
-Mを参照してください。
-m -m 変更の書き込みは許可されていません。
'write'オプションはリセットされるため、ファイルの書き込みは無効になります。ただし、
'write'オプションを設定して、書き込みを再び有効にすることができます。
stdinがTTYでない場合:-eはstdinをExコマンドとして読み取り/実行します。-Eはstdinをテキストとして(バッファ1に)読み取ります。
-es
-es -Es -s-ex サイレントモード -Es スクリプトモード、別名「サイレントモード」、別名「バッチモード」。UIがなく、ほとんどのプロンプトとメッセージを無効にします。
-sとは無関係です。スクリプトファイルを実行するには、
-Sも参照してください。
-esはstdinをExコマンドとして読み取り/実行します。
printf "put ='foo'\n%%print\n" | nvim -es
-Esはstdinをテキストとして(バッファ1に)読み取ります。コマンドを送信するには、
-cまたは「+」を使用します。
printf "foo\n" | nvim -Es +"%print"
これらのコマンドは標準出力に表示されます::list :number :print :set
:verboseまたは
'verbose'を使用すると、他のコマンドは標準エラー出力に表示されます。
nvim -es +":verbose echo 'foo'"
nvim -V1 -es +foo
-uが指定されていない限り、ユーザー
設定はスキップされます。スワップファイルはスキップされます(
-nのように)。ユーザー
shadaはロードされます(「-i NONE」が指定されていない限り)。
-l -l
{script}
[args] Lua
{script}
を、先行するNvim
コマンドライン引数を処理した後に、オプションの[args]を付けて、非インタラクティブに(UIなしで)実行し、終了します。Luaエラーが発生した場合、1で終了します。引数なしで、UIを使用して複数のLuaスクリプトを実行するには、
-Sを参照してください。
lua引数すべての[args]は
{script}
引数として扱われ、Lua
_G.arg
グローバルテーブルに格納されます。そのため、「-l」はNvim引数の処理を終了します。
{script}
名は
_G.arg[0]
に格納されます。
'verbose'を1に設定します(「-V1」のように)。そのため、Lua
print()
は出力に書き込みます。
{script}
がメッセージを出力し、Nvimを終了させない場合、Nvimは出力が改行で終わるようにします。
「-l」より前の引数は、
{script}
を実行する前に処理されます。この例では、「foo.lua」を実行する前に終了します。
nvim +q -l foo.lua
これは、「foo.lua」を実行する前にLuaモジュール「bar」を読み込みます。
nvim +"lua require('bar')" -l foo.lua
-ll -ll
{script}
[args]
-l と同様に Lua スクリプトを実行しますが、エディタは初期化されません。これは、ワーカースレッドに似た Lua 環境を提供します。
lua-loop-threading を参照してください。
-l
とは異なり、事前の引数は許可されません。
-V verbose -V[N] 詳細表示。
'verbose' オプションを [N](デフォルト:10)に設定します。 ":source" された各ファイル、および ShaDa ファイルの読み書きに対してメッセージが表示されます。起動時と終了時に何が起こっているかを確認するために使用できます。例
nvim -V8
-V[N]{file} -V と同様で、
'verbosefile' を
{file}
に設定します(数字で始めてはいけません)。メッセージは表示されず、代わりに
{file}
に書き込まれます。例
nvim -V20vimlog
-n -n
スワップファイル は使用されません。クラッシュ後の復旧は不可能になります。非常に低速のメディア(例:フロッピーディスク)上のファイルを表示または編集する場合に便利です。 ":set updatecount=0" でも同じことができます。
'updatecount' オプションを何らかの値(例:":set uc=100")に設定することで、再びオンにすることができます。
'updatecount' は、vimrc ファイルのコマンドを実行した後、GUI の初期化の前 に 0 に設定されます。したがって、vimrc ファイルの
'updatecount' の設定は上書きされますが、gvimrc ファイルの設定は上書きされません。
startup を参照してください。ディスクへのアクセスを減らしたい場合(例:ラップトップの場合)、 "-n" を使用せず、
'updatetime' と
'updatecount' を非常に大きな数値に設定し、作業を保存したいときに ":preserve" と入力します。こうすることで、クラッシュリカバリの可能性を維持できます。
-o -o[N] N 個のウィンドウを水平方向に分割して開きます。 [N] が指定されていない場合、引数として指定されたファイルごとに 1 つのウィンドウが開きます。十分なスペースがない場合は、最初の数個のファイルだけがウィンドウを取得します。引数よりもウィンドウの数が多い場合、最後の数個のウィンドウは空のファイルを編集します。
-O -O[N] N 個のウィンドウを垂直方向に分割して開きます。それ以外の場合は、-o と同様です。 -o オプションと -O オプションの両方が指定されている場合、コマンドラインの最後のオプションによってウィンドウの分割方法が決まります。
-p -p[N] N 個のタブページを開きます。 [N] が指定されていない場合、引数として指定されたファイルごとに 1 つのタブページが開きます。最大値は
'tabpagemax' ページ(デフォルト 50)で設定されます。引数よりもタブページの数が多い場合、最後の数個のタブページは空のファイルを編集します。
tabpage も参照してください。
-d-d
diff-mode で起動します。
これは、特別なマッピングと設定で Vim を特別なモードで起動するために使用できます。シェルエイリアスを使用すると、これを簡単に使用できます。たとえば、C シェルの派生では
alias vimc 'nvim -u ~/.config/nvim/c_init.vim \!*'
Bash シェルでは
alias vimc='nvim -u ~/.config/nvim/c_init.vim'
{vimrc}
が "NONE"(すべて大文字)の場合、ファイルと環境変数からのすべての初期化がスキップされます。プラグインと構文の強調表示もスキップされます。
{vimrc}
が "NORC"(すべて大文字)の場合、これは "NONE" と同じ効果がありますが、プラグインと構文の強調表示はスキップされません。
-i -i
{shada}
ファイル
{shada}
は、デフォルトの ShaDa ファイルの代わりに使用されます。名前 "NONE"(すべて大文字)が使用された場合、
'shada' が設定されている場合や ":rsh" または ":wsh" が使用されている場合でも、ShaDa ファイルは読み書きされません。
shada-file も参照してください。
-s -s
{scriptin}
スクリプトファイル
{scriptin}
を読み込み、文字をノーマルモード入力として解釈します。 ":source!" でも同じことができます。
:source! {scriptin}
{scriptin}
が "-" の場合、標準入力から読み取ります。
echo "ifoo" | nvim -s -
Nvim が終了する前にファイルの終わりに達した場合、さらに文字がキーボードから読み取られます。
-w -w
{scriptout}
Vim を終了するまでに入力したすべてのキーがファイル "scriptout" に記録されます。 "vim -s" または ":source!" で使用するスクリプトファイルを作成するのに便利です。 "scriptout" ファイルがすでに存在する場合は、そのファイルに追記します。
{scriptout}
は数字で始めることはできません。
vim.on_key() も参照してください。
complex-repeat も参照してください。
-W -W
{scriptout}
-w と同様ですが、追記するのではなく、既存のファイルを上書きします。
--embed --embed 標準入力/標準出力を msgpack-RPC チャネルとして使用します。そのため、アプリケーションは RPC
API を介して Nvim を埋め込み、制御できます。
クライアント(「エンベッダー」)が
nvim_ui_attach() を呼び出すまで、起動ファイルのソースを読み込み、バッファを読み込むのを待ちます。そのため、UI は初期メッセージ、ダイアログなどを決定的に処理(表示)できます。クライアントは
nvim_ui_attach
の前に他のリクエストを実行できます(例:機能検出のための
nvim_get_api_info
)。この起動前フェーズでは、ユーザー設定はもちろん利用できません(
--cmd
と同様)。
UI プロトコルを使用_しない_エンベッダーは、
--headless を渡す必要があります。
nvim --embed --headless
その後、
nvim_ui_attach
を待たずに起動が続行されます。これは、以下と同等です。
nvim --headless --cmd "call stdioopen({'rpc': v:true})"
ソケット接続で UI プロトコルを使用するエンベッダーは、
--listen と
--embed を渡す必要があります。
nvim --embed --listen addr
-es では出力されないメッセージを確認するためのスクリプト(テスト)にも便利です。
標準入力をテキストとして読み取るには、 "-" を明示的に指定する必要があります。 --headless は標準入力が単なるテキストであると想定できません。
echo foo | nvim --headless +"%print" +"q!" -
systemd を使用してサーバーをオンデマンドで起動するには、systemd ソケットユニットと、関連付けられたサービスユニットを実行します。
systemd-socket-proxyd --exit-idle-time
起動時に、Nvim は環境変数とファイルをチェックし、それに応じて値を設定し、次のように処理を進めます。
2. 引数を処理する Vim を起動するコマンドのオプションとファイル名が検査されます。
-V 引数を使用して、次に何が起こるかを表示またはログに記録できます。これは、初期化のデバッグに役立ちます。
--cmd 引数が実行されます。すべてのファイルのバッファが作成されます(ただし、まだロードされていません)。
4. UI が接続するのを待つ。
--embed で起動された Nvim は、ユーザー設定を読み込む前に UI が接続するのを待ちます。
6. ファイルタイプとインデントプラグインを有効にする。これは、次のコマンドと同じです。
:runtime! ftplugin.vim indent.vim
コマンドライン引数 "-u NONE" が指定されている場合はスキップされます。
7. ユーザー設定を読み込む(ファイル、環境などから Ex コマンドを実行する)。 $VIMINIT 環境変数は 1 つの Ex コマンドラインとして読み取られます(複数のコマンドは '|' または
<NL>
で区切ります)。
設定 init.vim init.lua vimrc exrc 初期化コマンドを含むファイルは、一般に「vimrc」または設定ファイルと呼ばれます。これは Vimscript(「init.vim」)または Lua(「init.lua」)のいずれかですが、両方ではありません。
E5422 vimrc-intro と
base-directories も参照してください。
設定ファイルは次の場所にあります。 Unix ~/.config/nvim/init.vim(または init.lua) Windows ~/AppData/Local/nvim/init.vim(または init.lua)
$XDG_CONFIG_HOME $XDG_CONFIG_HOME/nvim/init.vim(または init.lua)
Nvim が "-u
{file}
" で起動された場合、
{file}
が設定として使用され、8. までのすべての初期化がスキップされます。 $MYVIMRC は設定されません。 "nvim -u NORC" を使用すると、ファイルを読み取らずにこれらの初期化をスキップできます。 "nvim -u NONE" は、プラグインと構文の強調表示もスキップします。
-u
Nvim が
-es または
-Es または
-l で起動された場合、8. までのすべての初期化はスキップされます。
system-vimrc sysinit.vim a. システム vimrc ファイルが初期化のために読み込まれます。$XDG_CONFIG_DIRS のいずれかに nvim/sysinit.vim ファイルが存在する場合、それが使用されます。そうでない場合は、システム vimrc ファイルが使用されます。このファイルのパスは
:version コマンドで確認できます。通常は "$VIM/sysinit.vim" です。
VIMINIT EXINIT $MYVIMRC b. 初期化設定ファイルの検索場所(優先順位順)
$VIMINIT 環境変数 (Ex コマンドライン)。
ユーザー
設定ファイル: $XDG_CONFIG_HOME/nvim/init.vim (または init.lua)。
その他の設定ファイル: {dir}
/nvim/init.vim (または init.lua) 。ここで {dir}
は $XDG_CONFIG_DIRS 内の任意のディレクトリです。
$EXINIT 環境変数 (Ex コマンドライン)。
$MYVIMRC は、既に設定されている場合、または $VIMINIT を使用している場合を除き、最初に有効な場所に設定されます。
c.
'exrc' オプションが有効になっている場合(デフォルトでは無効)、カレントディレクトリで以下のファイルが優先順位で検索されます。
".nvim.lua"
".nvimrc"
".exrc" 最初に存在するファイルが使用され、残りは無視されます。
8. ファイルタイプ検出を有効にします。これは以下のコマンドと同じです。
:runtime! filetype.lua
":filetype off" が呼び出された場合、または "-u NONE" コマンドライン引数が指定された場合はスキップされます。
9. シンタックスハイライトを有効にします。これは以下のコマンドと同じです。
:runtime! syntax/syntax.vim
":syntax off" が呼び出された場合、または "-u NONE" コマンドライン引数が指定された場合はスキップされます。
10. プラグインスクリプトを読み込みます。
load-pluginsこれは以下のコマンドと同じです。
:runtime! plugin/**/*.{vim,lua}
'runtimepath' 内のすべてのディレクトリで "plugin" サブディレクトリが検索され、".vim" または ".lua" で終わるすべてのファイルが(ディレクトリごとにアルファベット順に)サブディレクトリも含めてソースされます。ディレクトリごとに、最初に "*.vim" がソースされ、次に "*.lua" ファイルがソースされます。
ただし、
'runtimepath' 内の "after" で終わるディレクトリはここでスキップされ、パッケージの後にのみ読み込まれます(下記参照)。プラグインの読み込みは、以下の場合に行われません。
"-u NONE" コマンドライン引数が使用された場合
-u。
-c 'set noloadplugins'
は機能しません。コマンドラインからのコマンドはまだ実行されていないためです。
--cmd 'set noloadplugins'
または
--cmd 'set loadplugins'
を使用できます
--cmd。
プラグインスクリプトは上記のように読み込まれますが、今度は "after" で終わるディレクトリのみが使用されます。
'runtimepath' はパッケージが見つかった場合に変更されますが、"after" で終わるディレクトリが追加されることはありません。
13.
-b フラグが指定された場合、バイナリオプションを設定します。
15.
-q フラグが指定された場合、quickfix ファイルを読み込みます。失敗した場合は終了します。
16. すべてのウィンドウを開きます。
-o フラグが指定された場合、ウィンドウが開かれます(ただし、まだ表示されません)。
-p フラグが指定された場合、タブページが作成されます(ただし、まだ表示されません)。画面を切り替えるときに、これが発生します。再描画が開始されます。
-q フラグが指定された場合、最初のエラーにジャンプします。すべてのウィンドウのバッファが、
BufAdd オートコマンドをトリガーすることなく読み込まれます。
17. 起動コマンドを実行します。
-t フラグが指定された場合、タグにジャンプします。
-c と
+cmd で指定されたコマンドが実行されます。起動フラグがリセットされ、has("vim_starting") はゼロを返します。
v:vim_did_enter 変数が 1 に設定されます。
VimEnter オートコマンドが実行されます。
オプションの値を変更した場合、またはマッピングを作成した場合、後で再利用するために vimrc ファイルに保存することができます。設定の現在の状態をファイルに保存する方法については、
save-settings を参照してください。
トロイの木馬を回避する
トロイの木馬 カレントディレクトリの "vimrc" または "exrc" ファイルを読み込む際、セキュリティ上の理由から、
'secure' オプションを設定することで、一部のコマンドを無効にすることができます。これは、タグファイルからコマンドを実行する場合には常に行われます。そうでない場合、他の誰かが作成した、悪意のあるコマンドを含む vimrc ファイルまたはタグファイルを誤って使用してしまう可能性があります。無効化されるコマンドは、シェルを起動するコマンド、ファイルに書き込むコマンド、および ":autocmd" です。":map" コマンドはエコーされるため、どのキーがマップされているかを確認できます。ローカルの vimrc ファイル内のすべてのコマンドを Vim に実行させたい場合は、EXINIT または VIMINIT 環境変数、またはグローバルな exrc または vimrc ファイルで
'secure' オプションをリセットできます。明らかな理由により、カレントディレクトリの vimrc または exrc ではこれはできません。Unix システムでは、これは vimrc ファイルの所有者でない場合にのみ発生します。
警告: vimrc または exrc ファイルを含むアーカイブを解凍すると、そのファイルはあなたの所有物になります。セキュリティ保護はされません。そのディレクトリで Vim を起動する前に vimrc ファイルを確認するか、
'exrc' オプションをリセットしてください。一部の Unix システムでは、ユーザーがファイルに対して "chown" を実行できます。これにより、別のユーザーが悪意のある vimrc を作成し、あなたを所有者にすることが可能になります。注意してください!タグ検索コマンドを使用する場合、検索コマンド(タグファイルの行の最後の部分)の実行は常にセキュアモードで行われます。これは、カレントディレクトリの vimrc からコマンドを実行する場合と同様に機能します。
'shada' が有効になっている場合、ShaDa ファイルの読み込みに時間がかかることがあります。これが問題かどうかを確認するには、ShaDa を一時的に無効にしてみてください(Vim 引数 "-i NONE" を使用します、
-i)。":set shada='20,<50,s10" を使用して、レジスタに格納される行数を減らしてみてください。
shada-file。
破損した設定のトラブルシューティング
二分探索 Vim や Emacs のようなエディタの極端な柔軟性は、プラグインや設定が、最初は明らかではない方法でエディタ全体に影響を与える可能性があることを意味します。
設定の問題の原因を見つけるには、「二分探索」する必要があります。1.
設定 の半分を削除または無効にします。2. Nvim を再起動します。3. 問題が引き続き発生する場合は、1. に戻ります。4. 問題がなくなった場合は、削除した行の半分を復元します。5. 問題の原因となっている設定またはプラグインが見つかるまで、この方法で設定を絞り込み続けます。
イントロメッセージ
:intro Vim がファイル名なしで起動すると、導入メッセージが表示されます。画面が再描画されるとすぐに削除されます。メッセージを再び表示するには、":intro" コマンドを使用します。起動時にイントロメッセージを回避するには、
'shortmess' に "I" フラグを追加します。
$VIM と $VIMRUNTIME
$VIM 環境変数 "$VIM" は、ユーザー
設定ファイル など、Nvim のさまざまなユーザーファイルを検索するために使用されます。これはシステムによって異なります。
startup を参照してください。
Nvim は以下の順序で $VIM の値を取得しようとします。
1. 環境変数 $VIM が設定されている場合、その値。2.
'helpfile' オプションから導出されたパス(環境変数が含まれていない場合)。デフォルトは "$VIMRUNTIME/doc/help.txt" です。ファイル名 ("help.txt" など) は削除されます。末尾のディレクトリ名は、"doc"、"runtime" の順に削除されます。3.
nvim
実行ファイルの場所から導出されたパス。4. コンパイル時に定義されたインストールディレクトリ(":version" の出力参照)。
これを一度実行した後、Nvim は $VIM 環境変数を設定します。
$VIMRUNTIME 環境変数 "$VIMRUNTIME" は、ドキュメントやシンタックスハイライトファイルなど、さまざまなサポートファイルを検索するために使用されます。たとえば、メインのヘルプファイルは通常 "$VIMRUNTIME/doc/help.txt" です。
Nvim は以下の順序で $VIMRUNTIME の値を取得しようとします。
1. 環境変数 $VIMRUNTIME が設定されている場合、その値。2. ディレクトリパス "$VIM/vim{version}" が存在する場合、その値。ここで
{version}
は '-' や '.' を含まない Vim のバージョン番号です。例: "$VIM/vim82"。3. ディレクトリパス "$VIM/runtime" が存在する場合、その値。4. $VIM 環境変数の値。これは古い Vim バージョンとの後方互換性のためです。5. "../share/nvim/runtime" が
v:progpath を基準として存在する場合、それが使用されます。6.
'helpfile' オプションから導出されたパス('$' を含まない場合)、末尾から "doc/help.txt" を削除したもの。
これを一度実行した後、Nvim は $VIMRUNTIME 環境変数を設定します。
シェルで $VIMRUNTIME の値が必要な場合(たとえば、ヘルプファイルで grep を実行するスクリプトの場合)、以下を使用できる場合があります。
VIMRUNTIME="$(nvim --clean --headless --cmd 'echo $VIMRUNTIME|q')"
CTRL-Z v_CTRL-Z CTRL-Z ":stop" と同様に、Nvim を一時停止します。ノーマルモードとビジュアルモードで動作します。挿入モードとコマンドラインモードでは、
CTRL-Z
は通常の文字として挿入されます。ビジュアルモードでは、Nvim はノーマルモードに戻ります。
:sus[pend][!] または
:sus :suspend :st :stop :st[op][!] OS の「ジョブ制御」を使用して Nvim を一時停止します。フォアグラウンドジョブに戻すと、続行されます。一時停止する前に
VimSuspend を、再開するときに
VimResume をトリガーします。"!" が指定されておらず、
'autowrite' が設定されている場合、変更がありファイル名を持つすべてのバッファが書き込まれます。"!" が指定されているか、
'autowrite' が設定されていない場合、変更されたバッファは書き込まれません。後で Nvim をフォアグラウンドに戻すことを忘れないでください!
GUI では、一時停止は実装定義です。
Vim を終了するには、いくつかの方法があります。
:quit
で最後のウィンドウを閉じます。変更がない場合のみ。
:quit!
で最後のウィンドウを閉じます。変更がある場合でも。
:qall
ですべてのウィンドウを閉じます。変更がない場合のみ。
:qall!
ですべてのウィンドウを閉じます。変更がある場合でも。
:cquit
を使用します。変更がある場合でも。
:cquit
を使用した場合、またはエラーメッセージが表示された場合、Vim は終了コード 1 で終了します。エラーは :silent!
または :catch
を使用することで回避できます。
ほとんどの場合、vimrc ファイルは手動で編集します。これにより、最大の柔軟性が得られます。 vimrc ファイルを自動的に生成するためのコマンドがいくつかあります。これらのファイルをそのまま使用することも、行をコピー/ペーストして別の vimrc ファイルに含めることもできます。
:mk :mkexrc :mk[exrc] [file] 現在のキーマッピングと変更されたオプションを、既に存在しない場合、[file](現在のディレクトリのデフォルトは ".exrc")に書き込みます。
:mk[exrc]! [file] 現在のキーマッピングと変更されたオプションを常に [file](現在のディレクトリのデフォルトは ".exrc")に書き込みます。
:mkv :mkvi :mkvimrc :mkv[imrc][!] [file] ":mkexrc" と同様ですが、デフォルトは現在のディレクトリの ".nvimrc" です。 ":version" コマンドもファイルに書き込まれます。
マッピングで特殊キーが使用されている場合、マッピングが誤って解釈されないように、
'cpoptions' オプションは一時的に Vim のデフォルトに設定されます。これにより、ファイルは Vi と互換性がなくなりますが、異なる端末で使用できるようになります。
バッファにローカルなマッピングではなく、グローバルマッピングのみが保存されます。
一般的な方法は、デフォルトの
設定 ファイルを使用し、":map" コマンドと ":set" コマンドでいくつかの変更を加えて、変更されたファイルを書き込むことです。最初に ":source ~piet/.vimrc.Cprogs" のようなコマンドでデフォルトの vimrc を読み込み、設定を変更してから、":mkvimrc!" で現在のディレクトリに保存します。このファイルをデフォルトの
設定 にするには、$XDG_CONFIG_HOME/nvim に移動します。 autocommands
autocommand や modelines
modeline を使用することもできます。
vimrc-オプションの例 vimrc に単一のオプション設定のみを追加する場合は、次の手順を実行します。1. Vim で vimrc ファイルを編集します。2. オプションが適切になるまで試します。たとえば、
'guifont' の異なる値を試します。3. 式レジスタ '=' を使用して値を入力し、オプションの値を設定する行を追加します。たとえば、
'guifont' オプションの場合
o:set guifont=<C-R>=&guifont<CR><Esc>
[<C-R>
は CTRL-R
、<CR>
はリターン、<Esc>
はエスケープキーです] 特殊文字、特にスペースはエスケープする必要があります。
これは、ユーザーマニュアルのセクション
21.4 と
21.5 で説明されています。
ビュー ビューファイル ビューは、1 つのウィンドウに適用される設定のコレクションです。ビューを保存しておくと、後で復元したときにテキストが同じように表示されます。このウィンドウのオプションとマッピングも復元されるため、ビューを保存したときと同じように編集を続けることができます。
セッション セッションファイル セッションは、すべてのウィンドウのビューとグローバル設定を保持します。セッションを保存しておくと、後で復元したときにウィンドウレイアウトが同じになります。セッションを使用して、異なるプロジェクト間をすばやく切り替え、そのプロジェクトで最後に作業していたファイルを自動的にロードできます。
ビューとセッションは、すべてのビューとセッションの情報 をまとめて記憶するために使用される ShaDa ファイルの良い追加機能です
shada-file。
-S 引数を使用して、以前に保存したビューまたはセッションですばやく編集を開始できます
vim -S Session.vim
:mks :mksession :mks[ession][!] [file] 現在の編集セッションを復元する Vim スクリプトを書き込みます。 [!] が含まれている場合、既存のファイルは上書きされます。 [file] を省略すると、 "Session.vim" が使用されます。
":mksession" の出力は ":mkvimrc" のようになっていますが、追加のコマンドがファイルに追加されます。どのコマンドが追加されるかは、
'sessionoptions' オプションによって異なります。結果のファイルは、":source" コマンドで実行すると、次のようになります。 1.
'sessionoptions' に "options" が含まれている場合、グローバルマッピングとオプションを復元します。スクリプトローカルマッピングは書き込まれません。 2.
'sessionoptions' に "globals" が含まれている場合、大文字で始まり、少なくとも 1 つの小文字を含むグローバル変数を復元します。 3. 現在のタブページの現在のウィンドウ以外のすべてのウィンドウを閉じます。現在のタブページ以外のすべてのタブページを閉じます(これにより、現在ロードされているバッファがアンロードされ、
'hidden' が設定されているかどうかにかかわらず、一部のバッファが非表示になる場合があります)。空で名前のないバッファの場合は、現在のバッファをワイプアウトします。 4.
'sessionoptions' に "curdir" が含まれている場合は現在のディレクトリを復元し、
'sessionoptions' に "sesdir" が含まれている場合は現在のディレクトリをセッションファイルのある場所に設定します。 5.
'sessionoptions' に "winpos" が含まれている場合、GUI Vim ウィンドウの位置を復元します。 6.
'sessionoptions' に "resize" が含まれている場合、画面サイズを復元します。 7. 最後のカーソル位置を使用して、バッファリストをリロードします。
'sessionoptions' に "buffers" が含まれている場合、非表示およびアンロードされたバッファを含むすべてのバッファが復元されます。それ以外の場合、ウィンドウ内のバッファのみが復元されます。 8. 同じレイアウトですべてのウィンドウを復元します。
'sessionoptions' に "help" が含まれている場合、ヘルプウィンドウが復元されます。
'sessionoptions' に "blank" が含まれている場合、名前のないバッファを編集しているウィンドウが復元されます。
'sessionoptions' に "winsize" が含まれていて、(ヘルプ/ブランク)ウィンドウが除外されていない場合、ウィンドウサイズは(画面サイズに対して)復元されます。それ以外の場合、ウィンドウには適切なサイズが指定されます。 9.
:mkview と同様に、すべてのウィンドウのビューを復元します。ただし、
'viewoptions' の代わりに
'sessionoptions' が使用されます。 10. セッションファイルと同じ名前で、 "x.vim"(eXtra の場合)で終わるファイルが存在する場合は、それも実行します。
*x.vim
ファイルを使用して、GUI バージョンでメニュー項目を作成するなど、特定のセッションに関連付けられた追加の設定とアクションを指定できます。
セッションの復元後、現在のセッションの完全なファイル名は内部変数
v:this_session で使用できます。マッピングの例
:nmap <F2> :wa<Bar>exe "mksession! " .. v:this_session<CR>:so ~/sessions/
これは現在のセッションを保存し、別のセッションをロードするコマンドを開始します。
SessionLoadPost autocmd イベントは、セッションファイルがロード/ソースされた後にトリガーされます。
SessionLoad-variableセッションファイルのロード中は、SessionLoad グローバル変数は 1 に設定されます。プラグインはこれを使用して、SessionLoadPost イベントがトリガーされるまで一部の作業を延期できます。
:mkvie :mkview :mkvie[w][!] [file] 現在のウィンドウの内容を復元する Vim スクリプトを書き込みます。 [!] が含まれている場合、既存のファイルは上書きされます。 [file] を省略するか、1 から 9 までの数値を指定すると、名前が生成され、
'viewdir' が前に付けられます。
'viewdir' の最後のパス部分が存在しない場合、このディレクトリが作成されます。たとえば、
'viewdir' が "$VIM/vimfiles/view" の場合、 "$VIM/vimfiles" に "view" が作成されます。その場合、既存のファイルは常に上書きされます。このビューを再度ロードするには、
:loadview を使用します。 [file] がファイルの名前(
'viewdir' は使用されません)の場合、ファイルを編集するコマンドが生成されたファイルに追加されます。
":mkview" の出力には、次の項目が含まれています。 1. ウィンドウで使用される引数リスト。グローバル引数リストが使用されている場合、グローバルリストにリセットされます。引数リストのインデックスも復元されます。 2. ウィンドウで編集されているファイル。ファイルがない場合、ウィンドウは空になります。 3.
'viewoptions' に "options" または "localoptions" が含まれている場合、ウィンドウにローカルなマッピング、省略形、およびオプションを復元します。現在のバッファと現在のウィンドウにローカルなオプション値のみが復元されます。セッションの一部としてビューを保存し、 "options" が
'sessionoptions' にある場合、ローカルオプションのグローバル値も保存されます。 4. 手動折りたたみを使用し、
'viewoptions' に "folds" が含まれている場合、折りたたみを復元します。手動で開閉された折りたたみを復元します。 5. ファイル内のスクロール位置とカーソル位置。閉じた折りたたみがある場合、うまく機能しません。 6. ローカルの現在のディレクトリがグローバルの現在のディレクトリと異なり、
'viewoptions' に "curdir" が含まれている場合、ローカルの現在のディレクトリ。
ビューとセッションは完璧ではないことに注意してください
すべてが復元されるわけではありません。たとえば、定義された関数、autocommand、および ":syntax on" は含まれていません。レジスタの内容やコマンドラインの履歴などは、セッションやビューではなく、ShaDa にあります。
グローバルオプション値は、デフォルト値と異なる場合にのみ設定されます。現在の値がデフォルト値でない場合、セッションをロードしてもデフォルト値に戻りません。ただし、ローカルオプションはデフォルト値に戻されます。
既存のマッピングは警告なしに上書きされます。既存のマッピングは、あいまいさのためにエラーを引き起こす可能性があります。
手動折りたたみを保存する場合、および手動で開閉された折りたたみを保存する場合、ビューの保存とロードの間のファイルの変更によって混乱が生じます。
Vim スクリプトはあまり効率的ではありません。しかし、それでも自分でコマンドを入力するよりも高速です!
:lo :loadview :lo[adview] [nr] 現在のファイルのビューをロードします。 [nr] を省略すると、":mkview" で保存されたビューがロードされます。 [nr] を指定すると、":mkview [nr]" で保存されたビューがロードされます。
":mkview" と ":loadview" を組み合わせることで、ファイルのビューを最大 10 個まで保存できます。これらは、
'viewdir' オプションで指定されたディレクトリに記憶されます。ビューはファイル名を使用して保存されます。ファイルの名前が変更された場合、または(シンボリック)リンクを介してアクセスされた場合は、ビューは見つかりません。
*.c
ファイルのビューを自動的に保存および復元するには
au BufWinLeave *.c mkview
au BufWinEnter *.c silent! loadview
Vim を終了して後で再起動すると、通常は多くの情報が失われます。ShaDa ファイルを使用すると、その情報を記憶できるため、中断したところから作業を続けることができます。その名前は、Nvim セッション間でデータを共有するために使用されるため、SHAred DAta の略です。
これは、ユーザーマニュアルのセクション
21.3 で紹介されています。
ShaDa ファイルは、以下の情報を保存するために使用されます。
コマンドライン履歴。
検索文字列履歴。
入力行履歴。
空でないレジスタの内容。
複数のファイルのマーク。
ファイル内の位置を指すファイルマーク。
最後の検索/置換パターン('n' および '&' 用)。
バッファリスト。
グローバル変数。
セッションファイルを使用することもできます。違いは、ShaDa ファイルは作業内容に依存しないことです。通常、ShaDa ファイルは 1 つだけです。セッションファイルは、特定の編集セッションの状態を保存するために使用されます。作業中のプロジェクトごとに 1 つずつ、複数のセッションファイルを持つことができます。ShaDa ファイルとセッションファイルを一緒に使用すると、Vim を効果的に起動し、目的のセットアップで直接作業を開始できます。
session-file
shada-read Vim が起動され、
'shada' オプションが空でない場合、ShaDa ファイルの内容が読み取られ、適切な場所で情報を使用できます。
v:oldfiles 変数には値が設定されます。マークは起動時には読み込まれません(ただし、ファイルマークは読み込まれます)。起動時に
'shada' オプションを設定する方法については、
初期化 を参照してください。
Unix のための注意事項
ShaDa ファイルのファイル保護は、他のユーザーが ShaDa ファイルを読み取れないように設定されます。これは、ShaDa ファイルに、作業したテキストやコマンドが含まれている可能性があるためです。
他のユーザーと ShaDa ファイルを共有する場合(たとえば、別のユーザーに "su" する場合)、ファイルの書き込み権限をグループまたは全員に付与できます。Vim は、新しい ShaDa ファイルを書き込むときにこれを保持します。注意してください。ShaDa ファイルの読み取りと書き込みを誰にでも許可しないでください!
Vim は、現在の「実際の」ユーザーが書き込みできない ShaDa ファイルを上書きしません。これは、root になるために "su" を実行したが、$HOME が依然として通常のユーザーのホームディレクトリに設定されている場合に役立ちます。そうでない場合、Vim は、他の誰も読み取ることができない、root が所有する ShaDa ファイルを作成します。
ShaDa ファイルはシンボリックリンクにすることはできません。これは、セキュリティの問題を回避するためです。
マークはファイルごとに個別に保存されます。ファイルが読み取られ、
'shada' が空でない場合、そのファイルのマークは ShaDa ファイルから読み取られます。**注:** マークは Vim の終了時にのみ書き込まれます。これは、":bdel" が使用されない限り、現在の編集セッションで開いたすべてのファイルのマークが記憶されるため問題ありません。":bdel" で破棄しようとしているファイルのマークを保存する場合は、":wsh" を使用してください。'[' および ']' マークは保存されませんが、'"' マークは保存されます。'"' マークは、ファイルが最後に終了したときのカーソル位置にジャンプするのに非常に便利です。
'shada' の "r" フラグで指定された文字列で始まるファイルのマークは保存されません。これは、リムーバブルメディア上のファイルのマークを保存しないようにするために使用できます(MS-Windows の場合は "ra:,rb:" を使用します)。
v:oldfiles 変数には、ShaDa ファイルにマークがあるファイル名が入力されます。
shada-file-marks 大文字のマーク('A から 'Z)は、ShaDa ファイルの書き込み時に保存されます。番号付きマーク('0 から '9)は少し特殊です。ShaDa ファイルが書き込まれるとき(終了時または
:wshada コマンドを使用した場合)、'0 は現在のカーソル位置とファイルに設定されます。古い '0 は '1 に、'1 は '2 に移動されます。これは、「1 から "9 までの削除レジスタで起こることと似ています。現在のカーソル位置がすでに '0 から '9 に存在する場合は、同じ位置が 2 回出現しないように '0 に移動されます。その結果、"'0" を使用すると、Vim を終了したファイルと行に戻ることができます。すぐにそれを行うには、次のコマンドを試してください
vim -c "normal '0"
C シェルの派生では、エイリアスを作成できます
alias lvim vim -c '"'normal "'"0'"'
Bash 系のシェルでは
alias lvim='vim -c "normal '\''0"'
'shada' の "r" フラグを使用して、どのファイルのマークを記憶しないかを指定します。
bang なしで
:wshada を使用して ShaDa ファイルを書き込む場合、または通常の終了時に、既存の ShaDa ファイルの情報が現在の Nvim インスタンスの情報とマージされます。この目的のために、ShaDa ファイルは ShaDa エントリに関連付けられたタイムスタンプを保存します。具体的には、以下が行われます
1. 履歴行はタイムスタンプ順にマージされます。ShaDa ファイルの最大項目数は、
'shada' オプションで定義されます(
shada-/、
shada-:、
shada-@ など: 履歴名を表す各文字に 1 つのサブオプションがあります(
:history))。2. Nvim によって開かれていないファイルのローカルマークと変更は、新しい ShaDa ファイルにコピーされます。Nvim によって開かれたファイルのマークはマージされ、Nvim によって開かれたファイルへの変更は無視されます。
shada-' 3. ジャンプリストはマージされます。ジャンプはタイムスタンプ順に並べ替えられ、同一のジャンプ(同一の位置とタイムスタンプ)は統合されます。4. 検索パターンと置換文字列はマージされません。タイムスタンプが最大の検索パターンまたは置換文字列のみが ShaDa ファイルにコピーされます。5. 各レジスタについて、タイムスタンプが最大のエンティティのみが保存されます。
shada-< 6. 保存されたすべての変数は、現在の Nvim インスタンスから保存されます。さらに、既存の変数値がコピーされます。つまり、ShaDa ファイルから変数を削除する唯一の方法は、手動で削除するか、変数の書き込みを完全に無効にすることです。
shada-! 7. 各グローバルマークについて、タイムスタンプが最大のエンティティのみが保存されます。8. バッファリストとヘッダーは、いかなる方法でもマージされない唯一のエントリです。存在する唯一のヘッダーとバッファリストは、最後にファイルを書き込んだ Nvim インスタンスからのものです。
shada-%
ShaDa ファイルは、前方互換性と後方互換性があります。これは、以下のことを意味します。
1. 不明なタイプ(つまり、未識別データを保持している)のエントリは、読み取り時には無視され、書き込み時にはそのままコピーされます。2. 不明なレジスタ名を持つレジスタエントリは、読み取り時には無視され、書き込み時にはそのままコピーされます。制限: 名前が [1, 255] の間隔のコードを使用するレジスタのみがサポートされます。
registers 3. 不明なレジスタタイプを持つレジスタエントリは、読み取り時には無視され、書き込み時には通常どおりマージされます。
getregtype() 4. 不明なマーク名を持つローカルおよびグローバルマークエントリは、読み取り時には無視されます。書き込み時、グローバルマークエントリはそのままコピーされ、ローカルマークエントリもそのままコピーされますが、それがアタッチされているファイルが
shada-' の制限に収まる場合のみです。不明なローカルマークエントリのタイムスタンプも、どのファイルを正確にこの制限に収めるかを計算する際に考慮されます。制限: 名前が [1, 255] の間隔のコードを使用するマークのみがサポートされます。
mark-motions 5. 不明な履歴タイプを持つ履歴エントリは、読み取り時には無視され、書き込み時にはそのままコピーされます。制限: 最大 256 の履歴タイプしか存在できません。
history 6. レジスタ、ローカルマーク、グローバルマーク、変更、ジャンプ、および検索パターンエントリで見つかった不明なキーは、内部的に保存され、書き込み時にダンプされます。Nvim セッション中に作成されたエントリには、そのような追加はありません。7. 置換文字列と履歴エントリで見つかった追加の要素は、内部的に保存され、ダンプされます。Nvim セッション中に作成されたエントリには、そのような追加はありません。8. 変数エントリで見つかった追加の要素は、読み取り時に単に無視されます。新しい変数を書き込むと、マージ中にそれらは保持されますが、それだけです。現在の Nvim セッションからダンプされた変数値には、変数自体が ShaDa ファイルを読み取ることによって取得された場合でも、追加の要素はありません。
ここでの「そのまま」とは、他のエントリ(既知の名前/タイプ/などを持つ)がマージされた場合でも、それらを何らかの方法でマージしようとする試みがないことを意味します。
shada-merging
shada ファイルのデフォルト名は次のとおりです。Unix: "$XDG_STATE_HOME/nvim/shada/main.shada" Windows: "$XDG_STATE_HOME/nvim-data/shada/main.shada"
base-directories も参照してください。
別のファイル名を選択するには、以下を使用できます。
-i 起動引数。"NONE" は、shada ファイルが読み書きされないことを意味します。以下のコマンドにも使用されません!
以下のコマンドでは、別のファイル名を指定できます。これは、デフォルトと
'shada' または "-i" で指定された名前をオーバーライドします(NONE でない限り)。
ShaDa ファイルを手動で読み書きするには、2 つのコマンドを使用できます。これは、2 つの 実行中の Vim プログラム間でレジスタを交換するために使用できます。最初に一方のプログラムで ":wsh" と入力し、もう一方のプログラムで ":rsh" と入力します。レジスタにすでに何かが含まれている場合は、":rsh!" が必要になることに注意してください。ただし、これは、コマンドライン履歴などを含め、すべてが最初の Vim の情報で上書きされることを意味することに注意してください。
ShaDa ファイル自体は手動で編集することもできますが、フォーマットを正しく理解するために既存のファイルから始めることをお勧めします。これを行うには、MessagePack(または、より可能性が高いのは、それを使用できるソフトウェアを見つけること)のフォーマットを理解する必要があります。これは、2 番目のファイル(例: "~/.my.shada")を作成するために役立ちます。このファイルには、Nvim を最初に起動したときに常に必要な特定の設定を含めることができます。たとえば、レジスタに特定のデータを事前にロードしたり、コマンドラインの履歴に特定のコマンドを配置したりできます。
設定 ファイルに次のような行を追加することで、
:rshada! ~/.my.shada
この情報をロードできます。異なる種類のファイル(例:C コード)に対して異なる ShaDa ファイルを作成し、":autocmd" コマンドを使用してファイル名に基づいてロードすることもできます(
:autocmd を参照)。ShaDa ファイル形式の詳細については、
shada-format セクションを参照してください。
E136 E929 shada-error-handling 一部のエラーにより、Nvim は
{basename}.tmp.X
という名前の一時ファイルを残します(X は
a
から
z
までの任意の空き文字です)。通常は、このファイルを作成し、書き込んだ後、
{basename}.tmp.X
を
{basename}
に名前変更します。このようなエラーには以下が含まれます。
Nvim が読み込んでいるファイルが ShaDa ファイルではないと判断させるエラー:関連のないファイルを誤って破壊しないように、安全上の理由から、非 ShaDa ファイルは上書きされません。これは、たとえば "nvim -R file" の代わりに "nvim -i file" と入力した場合に発生する可能性があります(実際に、Vim で少なくとも誰かがこれを行いました)。このようなエラーは、
shada-critical-contents-errors にリストされています。
一時ファイルへの書き込みに失敗した場合:たとえば、残りの容量が不足しているため。
ファイルの名前変更に失敗した場合:たとえば、権限が不足しているため。
ターゲット ShaDa ファイルの所有者(ユーザーとグループ)が Nvim インスタンスの所有者と異なり、それらの変更に失敗した場合。Unix 特有で、Nvim が root から起動された場合にのみ適用されます。
上記のエラーのいずれかが発生した後、一時ファイルを削除するか、ターゲットファイルを一時ファイルに置き換えることを忘れないでください。そうしないと、ShaDa ファイルを作成するすべての試みが
E929 で失敗する可能性があります。
:wshada を使用しているときに(Nvim の終了時ではなく、つまり Nvim セッションが実行されているときに)これらのエラーのいずれかが発生した場合、追加のオプションがあります。
一時ファイルへの書き込みの失敗以外のエラーが発生した場合に最初に検討すべきことは、既存のファイルを削除して一時ファイルに置き換えることです。実行中の Nvim インスタンスがある場合でも、これを実行します。
権限やファイルの所有権を修正し、容量を解放して、もう一度書き込みを試みます。既存のファイルは削除しないでください。
:wshada を感嘆符(!)付きで使用します。権限エラーの場合は役に立ちません。ターゲットファイルが実際に ShaDa ファイルであった場合、この場合、一部の情報が失われる可能性があります。事態を少し改善するために、書き込み前に
:rshada を使用しますが、それでも、現在の Nvim インスタンスで開かれていないファイルのバッファローカルマークと変更リストエントリは失われます。
シェルからターゲットファイルを削除し、
:wshada を使用します。結果は、
:wshada を感嘆符付きで使用するのと変わりませんが、書き込み権限がない場合でも "rm -f" が機能することがあります。
:rsh :rshada E886 :rsh[ada][!] [file] ShaDa ファイル [file] から読み取ります(デフォルト:上記を参照)。[!] が指定されている場合、既に設定されている情報(レジスタ、マーク、
v:oldfiles など)は上書きされます。
:wsh :wshada E137 :wsh[ada][!] [file] ShaDa ファイル [file] に書き込みます(デフォルト:上記を参照)。ファイル内の情報は、まず読み込まれて、古い情報と新しい情報の間にマージが作成されます。[!] が使用されている場合、古い情報は最初に読み取られず、内部情報のみが書き込まれます(
shada-error-handling に記載されている安全チェックも無効になります)。
'shada' が空の場合、最大 100 ファイルのマークが書き込まれます。"E929: All .tmp.X files exist, cannot write ShaDa file!" というエラーが発生した場合は、古い一時ファイルが残っていないことを確認してください(例:~/.local/state/nvim/shada/main.shada.tmp*)。
注: :wshada を実行すると、すべての
'quote マークがリセットされます。
:o :ol :oldfiles :o[ldfiles] ShaDa ファイルに格納されているマークを持つファイルのリストを表示します。このリストは起動時に読み取られ、その後は
:rshada!
でのみ変更されます。
v:oldfiles も参照してください。番号は
c_#< で使用できます。出力は
:filter でフィルタリングできます。例:
filter /\.vim/ oldfiles
フィルタリングはファイル名に対して行われます。
:bro[wse] o[ldfiles][!]
:oldfiles と同様にファイル名を表示し、番号の入力を求めます。番号が有効な場合、リストからそのファイルが編集されます。
press-enter プロンプトが表示された場合、「q」を押すと、ファイル番号を入力するためのプロンプトが表示されます。変更されたバッファを破棄するには、[!] を使用します。
abandon
ShaDa ファイルは、MessagePack エントリの連結です。各エントリは、正確に 4 つの MessagePack オブジェクトの連結です。
1. 最初はエントリのタイプです。オブジェクトタイプは符号なし整数である必要があります。オブジェクトタイプはゼロと等しくなってはなりません。2. 2 番目はエントリのタイムスタンプです。これも符号なし整数である必要があります。3. 3 番目は 4 番目のエントリの長さです。これも符号なし整数で、解析せずに高速スキップするために使用されます。4. 4 番目は実際のエントリデータです。現在使用されているすべての ShaDa エントリは、データを保持するためにコンテナ(マップまたは配列)を使用します。これらのコンテナ内のすべての文字列値は、バイナリ(ファイル名に適用)または UTF-8 のいずれかですが、パーサーは UTF-8 文字列に無効なバイトが存在する可能性があることを予期する必要があります。
正確な形式はエントリタイプによって異なります。
エントリタイプ(名前) エントリデータ
1 (Header) この ShaDa ファイルを書き込んだジェネレータインスタンスを記述するデータを含むマップ。ShaDa ファイルを読み取るときには無視されます。以下のデータが含まれています。
キー データ
generator バイナリ、ShaDa ファイルの生成に使用されたソフトウェア。ShaDa ファイルが Nvim によって書き込まれた場合、「nvim」と等しくなります。version バイナリ、ジェネレータのバージョン。encoding バイナリ、有効な
'encoding' 値。max_kbyte 整数、有効な
shada-s 制限値。pid 整数、インスタンスプロセス ID。
*
任意の数の追加キーを任意のデータと共に使用できます。2 (SearchPattern) 最後に使用された検索または置換パターンを記述するデータを含むマップ。通常、ShaDa ファイルには、このようなエントリが 2 つ含まれています。"ss" キーが true に設定されているもの(置換パターンを記述、
:substitute を参照)と、false に設定されているもの(検索パターンを記述、
search-commands を参照)です。"su" キーは、いずれかのエントリで true である必要があります。キー値がデフォルトと等しい場合、通常は存在しません。キー
キ タイプ デフォルト 説明
sm ブール値 true 有効な
'magic' 値。sc ブール値 false 有効な
'smartcase' 値。sl ブール値 true 検索パターンに行オフセットが付いている場合は true。
search-offset を参照してください。se ブール値 false
search-offset がパターンの(相対的な)最後にカーソルを配置するように要求された場合は true。so 整数 0 オフセット値。
search-offsetsu ブール値 false 現在のエントリが最後に使用された検索パターンであった場合は true。ss ブール値 false 現在のエントリが
:substitute パターンを記述する場合は true。sh ブール値 false
v:hlsearch がオンの場合は true。
shada-h または
'nohlsearch' を使用すると、このキーは常に false になります。sp バイナリ 該当なし 実際のパターン。必須。sb ブール値 false 検索方向が後方の場合に true。
*
任意 なし その他のキーは互換性の理由で許可されています。
shada-compatibility を参照してください。3 (SubString) 最後の
:substitute 置換文字列を含む配列。単一のエントリが含まれています:バイナリ、使用された置換文字列。その他のエントリは互換性の理由で許可されています。
shada-compatibility を参照してください。4 (HistoryEntry) 履歴から 1 つのエントリを含む配列。2 つまたは 3 つのエントリが必要です。1 つ目は履歴タイプ(符号なし整数)、2 つ目は履歴行(バイナリ)、3 つ目は区切り文字(符号なし整数、0 から 255 の間隔である必要があります)です。3 番目の項目は、検索履歴に対してのみ有効です。有効な履歴タイプは
hist-names にリストされています。対応する番号は次のとおりです。0 - cmd、1 - search、2 - expr、3 - input、4 - debug。5 (Register) 1 つのレジスタ(
registers)を記述するマップ。キー値がデフォルトと等しい場合、通常は存在しません。キー
キ タイプ デフォルト 説明
rt 符号なし整数 0 レジスタタイプ
番号 説明
0
charwise-register 1
linewise-register 2
blockwise-register rw 符号なし整数 0 レジスタ幅。
blockwise-register に対してのみ有効です。rc バイナリの配列 該当なし レジスタの内容。配列内の各エントリは、独自の行を表します。行内の NUL 文字は、
NL-used-for-Nul に従って NL として表される必要があります。ru ブール値 false 無名レジスタ。匿名レジスタがこのレジスタを指していたかどうか。n 符号なし整数 該当なし レジスタ名:1 から 255 の範囲の文字コード。例:
quote0 レジスタの名前は 48 です(ゼロ文字の ASCII コード)。* 任意 なし その他のキーは互換性の理由で許可されています。
shada-compatibility を参照してください。6 (Variable) 2 つの項目を含む配列:変数名(バイナリ)と変数値(任意のオブジェクト)。値は、読み取り時には
msgpackparse() が使用するコード、書き込み時には
msgpackdump() が使用するコードを使用して変換されるため、
msgpack-special-dict が表示される場合があります。エントリが 3 つ以上ある場合、残りは無視されます(
shada-compatibility)。7 (GlobalMark) 8 (Jump) 10 (LocalMark) 11 (Change) 位置の説明を含むマップ
エントリ 位置
GlobalMark グローバルマークの位置。
'A' LocalMark ローカルマークの位置。
'a' Jump
jumplist からの位置。Change
changelist からの位置。
マップに含まれるデータ
キ タイプ デフォルト 説明
l 符号なし整数 1 位置の行番号。ゼロより大きい必要があります。c 符号なし整数 0 位置の列番号。n 符号なし整数 34 ('"') マーク名。GlobalMark および LocalMark エントリに対してのみ有効です。f バイナリ 該当なし ファイル名。必須。
*
任意 なし その他のキーは互換性の理由で許可されています。
shada-compatibility を参照してください。9 (BufferList) マップを含む配列。配列内の各マップは、1 つのバッファを表します。可能なキー
キ タイプ デフォルト 説明
l 符号なし整数 1 位置の行番号。ゼロより大きい必要があります。c 符号なし整数 0 位置の列番号。f バイナリ 該当なし ファイル名。必須。
*
任意 なし その他のキーは互換性の理由で許可されています。
shada-compatibility を参照してください。
*
(Unknown) その他のエントリタイプは互換性の理由で許可されています。
shada-compatibility を参照してください。
E575 E576 ShaDa ファイルのエラーには、2 つのタイプがあります。1. 「論理」エラーの場合は E575。2. 「重大な」エラーの場合は E576。書き込み時、重大なエラーは
shada-error-handling に記載されている動作をトリガーします。読み取り時、重大なエラーが発生すると、ファイルの残りの部分がスキップされます。重大なエラーには以下が含まれます。
shada-critical-contents-errors
最初の 3 つの MessagePack オブジェクトのいずれかが符号なし整数ではない。
3 番目のオブジェクトが、ShaDa ファイルに残っているバイト数よりも多いバイト数を要求している。
タイプがゼロのエントリ。つまり、最初のオブジェクトがゼロに等しい。
MessagePack パーサーがエントリデータの解析に失敗した。
MessagePackパーサーは、4番目のオブジェクトを解析する際に、3番目のオブジェクトで記述されているよりも少ないバイトを消費するか、またはより多くのバイトを要求します。 つまり、4番目のオブジェクトに複数のMessagePackオブジェクトが含まれている場合、または完全なMessagePackオブジェクトが含まれていない場合です。
Nvimは、設定、データ、およびログを標準の場所に保存します。プラグインもこのパターンに従うことを強くお勧めします。パスを取得するには、
stdpath()を使用してください。
ヘルプページ全体で、これらのデフォルト値がプレースホルダーとして使用されます。たとえば、「〜/ .config」は「$ XDG_CONFIG_HOMEまたは〜/ .config」を意味すると理解されています。
設定ディレクトリ(デフォルト)
$XDG_CONFIG_HOME Nvim: stdpath("config") Unix: ~/.config ~/.config/nvim Windows: ~/AppData/Local ~/AppData/Local/nvim
データディレクトリ(デフォルト)
$XDG_DATA_HOME Nvim: stdpath("data") Unix: ~/.local/share ~/.local/share/nvim Windows: ~/AppData/Local ~/AppData/Local/nvim-data
実行ディレクトリ(デフォルト)
$XDG_RUNTIME_DIR Nvim: stdpath("run") Unix: /tmp/nvim.user/xxx /tmp/nvim.user/xxx Windows: $TMP/nvim.user/xxx $TMP/nvim.user/xxx
状態ディレクトリ(デフォルト)
$XDG_STATE_HOME Nvim: stdpath("state") Unix: ~/.local/state ~/.local/state/nvim Windows: ~/AppData/Local ~/AppData/Local/nvim-data
キャッシュディレクトリ(デフォルト)
$XDG_CACHE_HOME Nvim: stdpath("cache") Unix: ~/.cache ~/.cache/nvim Windows: ~/AppData/Local/Temp ~/AppData/Local/Temp/nvim-data
ログファイル(デフォルト)
$NVIM_LOG_FILE
Nvim: stdpath("log")/log Unix: ~/.local/state/nvim ~/.local/state/nvim/log Windows: ~/AppData/Local/nvim-data ~/AppData/Local/nvim-data/log
stdpath("log")は現在stdpath("state")のエイリアスであることに注意してください。
追加の設定ディレクトリ(デフォルト)
$XDG_CONFIG_DIRS Nvim: stdpath("config_dirs") Unix: /etc/xdg/ /etc/xdg/nvim Windows: 適用不可 適用不可
追加のデータディレクトリ(デフォルト)
$XDG_DATA_DIRS Nvim: stdpath("data_dirs") Unix: /usr/local/share /usr/local/share/nvim /usr/share /usr/share/nvim Windows: 適用不可 適用不可
標準ディレクトリは、
$NVIM_APPNAME
環境変数によってさらに設定できます。この変数は、Nvimが各ベースディレクトリ内で読み取る(および自動作成する)サブディレクトリを制御します。たとえば、起動前に
$NVIM_APPNAME
を「foo」に設定すると、Nvimは`$XDG_CONFIG_HOME/nvim`ではなく`$XDG_CONFIG_HOME/foo`にある設定ファイルを探します。
$NVIM_APPNAME
は、「foo」などの名前、または「foo / bar」などの相対パスである必要があります。
$ NVIM_APPNAMEの1つのユースケースは、Nvimアプリケーションを「分離」することです。 あるいは、真の分離のために、Linuxではcgroups名前空間を使用できます
systemd-run --user -qt -p PrivateUsers=yes -p BindPaths=/home/user/profile_xy:/home/user/.config/nvim nvim
注:ヘルプページ全体で、
$XDG_CONFIG_…/nvim
と記載されている場合は、
$XDG_CONFIG_…/$NVIM_APPNAME
を意味すると理解されています。
'debug'と
'verbose'に加えて、Nvimは内部デバッグ、プラグイン、およびRPCクライアントの一般的なログファイルを保持します。
:echo $NVIM_LOG_FILE
デフォルトでは、ファイルはstdpath("log")/log($XDG_STATE_HOME/nvim/log)にありますが、そのパスにアクセスできない場合、または$NVIM_LOG_FILEが
起動前に設定されている場合は異なります。