よくある質問

Nvim :help ページは、ソース から tree-sitter-vimdoc パーサーを使用して 生成 されています。


よくある質問

一般的な質問 faq-general

設定ファイル(VIMRC)はどこに置くべきですか?
config を参照してください。既存の vimrc をコピー(またはシンボリックリンク)できます。 nvim-from-vim
開発版(プレリリース版)はどの程度安定していますか?
不安定な(プレリリース)https://github.com/neovim/neovim/releases/tag/nightly バージョンの Nvim("HEAD"、つまり master ブランチ)は、新機能や変更を積極的に導入するために使用されます。通常は安定していますが、ワークフローが中断される場合があります。自動テストでは検出されない「盲点」を報告するために、HEAD ユーザーに依存しています。
より予測可能なエクスペリエンスを得るには、安定版(リリース)https://github.com/neovim/neovim/releases/latest バージョンを使用してください。
LuaベースのVimプラグイン(例:Neocomplete)を使用できますか?
いいえ。Nvim 0.2 PR #4411 https://github.com/neovim/neovim/pull/4411 以降、Luaは組み込まれていますが、従来の Vim if_lua インターフェースはサポートされていません。
ターミナルで「トゥルーカラー」を使用するにはどうすればよいですか?
トゥルーカラー(24ビットカラー)は、対応するターミナルが検出された場合、デフォルトで有効になります。ターミナルが検出されないが、トゥルーカラーをサポートしていることが確実な場合は、init.vim に以下を追加してください。
set termguicolors
モードを変更すると、NVIMに奇妙な記号(�[2 q)が表示されます
これは、ターミナルエミュレータのバグです。ターミナルがxterm互換(TERM=xterm-256color)であると判断された場合、Nvimがデフォルトでカーソル形状のtermcodeを送信するために発生します。
この問題を回避するには、次のことができます。
別のターミナルエミュレータを使用する
Nvim設定で'guicursor'を無効にする
:set guicursor=
" Workaround some broken plugins which set guicursor indiscriminately.
:autocmd OptionSet guicursor noautocmd set guicursor=
$TERM の推奨値については、$TERM も参照してください。
ターミナルでカーソル形状を変更するにはどうすればよいですか?
Nvim 0.1.7以前の場合:man nvimNVIM_TUI_ENABLE_CURSOR_SHAPE に関する注意事項を参照してください。
Nvim 0.2以降の場合:カーソルスタイルは'guicursor'オプションによって制御されます。
カーソルスタイルを_無効にする_には、'guicursor'を空に設定します
:set guicursor=
" Workaround some broken plugins which set guicursor indiscriminately.
:autocmd OptionSet guicursor noautocmd set guicursor=
点滅しないカーソルが必要な場合は、blinkon0を使用します。'guicursor'を参照してください。
Nvimがターミナルでサポートされていないと判断しない限り、'guicursor'はデフォルトで有効になっています。ターミナルがカーソルシェーピングをサポートしていることが確実な場合は、'guicursor'で説明されているように、init.vim'guicursor'を設定します。
Vimターミナルオプションt_SIおよびt_EIは、他のすべてのt_xxオプションと同様に無視されます。
libvte(gnome-terminal、roxterm、terminatorなど)の古いバージョンは、カーソルスタイル制御コードをサポートしていません。 #2537 https://github.com/neovim/neovim/issues/2537
ターミナルでカーソル色を変更するにはどうすればよいですか?
カーソルスタイル(形状、色、動作)は、ターミナルでも'guicursor'によって制御されます。カーソル色(形状とは対照的に)は、'termguicolors'が設定されている場合にのみ機能します。
'guicursor'には例が示されていますが、挿入モードとノーマルモードで異なる色を設定する、より複雑な例を次に示します。
:set termguicolors
:hi Cursor guifg=green guibg=green
:hi Cursor2 guifg=red guibg=red
:set guicursor=n-v-c:block-Cursor/lCursor,i-ci-ve:ver25-Cursor2/lCursor2,r-cr:hor20,o:hor50
NVIMの終了後、または一時停止と再開後にカーソルスタイルが復元されません
ターミナルは、カーソルスタイルを照会する方法を提供していません。カーソルスタイルを管理するには、自動コマンドを使用します
au VimEnter,VimResume * set guicursor=n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50
  \,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor
  \,sm:block-blinkwait175-blinkoff150-blinkon175
au VimLeave,VimSuspend * set guicursor=a:block-blinkon0
TMUXでカーソル形状が変化しません
tmuxが決めます、Nvimではありません。修正については、tui-cursor-shapeを参照してください。
議論については、#3165 https://github.com/neovim/neovim/pull/3165 を参照してください。
TMUXでカーソルがちらつきますか?
tmuxでドキュメントなしでnvimを開くと、カーソル_が非常に速く表示され、消える場合、EndOfBufferNormalctermbgを設定してみてください。これらをNONEに設定してみてください
hi EndOfBuffer ctermbg=NONE ctermfg=200 cterm=NONE
hi Normal ctermbg=NONE ctermfg=200 cterm=NONE
--remoteなどはどうなりましたか?
--remoteは部分的にサポートされています。 clientserver
NvimにないVimのフラグが必要な場合は、代わりにhttps://github.com/mhinz/neovim-remoteを使用できます。

ランタイムの問題 faq-runtime

マウスでX11プライマリ選択にコピーできません
clipboard=autoselectはまだ実装されていませんhttps://github.com/neovim/neovim/issues/2325。この回避策が役立つ場合があります
vnoremap <LeftRelease> "*ygv
vnoremap <2-LeftRelease> "*ygv
私のCTRL-Hマッピングが機能しません
これはNvim 0.2で修正されました。Nvim 0.1.7以前を実行している場合は、ターミナルの「kbs」(key_backspace)terminfoエントリを調整してください
infocmp $TERM | sed 's/kbs=^[hH]/kbs=\\177/' > $TERM.ti
tic $TERM.ti
(上記のコマンドを実行した後に作成された一時的な*.tiファイルは削除して構いません)。
<HOME>またはその他の「特殊」キーが機能しません
$TERMが正しく設定されていることを確認してください。
screenまたはtmuxの場合、$TERMscreen-256colorxterm-256colorではありません!)である必要があります
それ以外の場合は、文字列に「256」が表示されない場合、おそらく間違っています。TERM=xterm-256colorを試してください。
:!とSYSTEM()は、対話型プロセスで奇妙な動作をします
対話型コマンドは、Nvimの:terminalでサポートされています。しかし、:!system()は対話型コマンドをサポートしていません。主な理由は、Nvim UIがstdioをmsgpack通信に使用するためですが、パフォーマンス、信頼性、プラットフォーム間の一貫性のためでもあります(https://vimhelp.org/gui_x11.txt.html#gui-ptyを参照)。
Pythonのサポートが機能していません
自動診断のために、Nvimで:checkhealthを実行してください。
その他のヒント
python neovimモジュールはpynvimに名前変更されました(ずっと前に)。
pynvimモジュールhttps://pypi.org/project/pynvim/,にpyenvまたはvirtualenvを使用している場合は、g:python3_host_progをvirtualenvのインタープリターパスに設定する必要があります。
provider-pythonを読んでください。
最新バージョンのpynvim Pythonモジュールがあることを確認してください
python -m pip install setuptools
python -m pip install --upgrade pynvim
python3 -m pip install --upgrade pynvim
設定(init.vim)が問題を引き起こしていないことを確認するために、nvim -u NORCで試してください。E117: Unknown functionが表示された場合は、ランタイムの問題があります:faq-runtime
:CHECKHEALTHがE5009:INVALID $VIMRUNTIMEを報告します
これは、health#check()がロードできなかったことを意味し、$VIMRUNTIMEまたは'runtimepath'が壊れていることを示唆しています。
$VIMRUNTIMEは、Vimのランタイムファイルではなく、Nvimのランタイムファイルを指している必要があります。
$VIMRUNTIMEディレクトリのコンテンツは、現在のユーザーが読み取れる必要があります。
:echo &runtimepathに$VIMRUNTIMEパスが含まれていることを確認してください。
次の出力を確認してください
:call health#check()
:verbose func health#check
NEOVIMはランタイムを見つけることができません
これは、:help nvimに`E149: Sorry, no help for nvim`が表示される場合です。
:echo $VIM:echo $VIMRUNTIMEをチェックして、$VIM$VIMRUNTIMEがVimのランタイムではなくNvimのランタイムを指していることを確認してください。これは、/usr/share/nvimまたは/usr/share/nvim/runtimeのようになります。
また、上記$VIMRUNTIMEをデフォルトで含むruntimepath(:set runtimepath?)を誤って上書きしないようにしてください('runtimepath'を参照)。
NEOVIMが遅い
高速なターミナルエミュレータを使用する
最適化されたビルドを使用する
:checkhealth nvimは、これらの「ビルドタイプ」のいずれかを報告するはずです
Build type: RelWithDebInfo
Build type: MinSizeRel
Build type: Release
Build type: Debugと報告され、ソースからNvimをビルドしている場合は、https://github.com/neovim/neovim/blob/master/BUILD.mdを参照してください。
色が正しく表示されない
$TERMが正しく設定されていることを確認してください。
シェルから、TERM=xterm-256color nvimを実行します。色が正しく表示される場合は、ユーザープロファイル(通常は~/.profile)にTERMの値をエクスポートします
export TERM=xterm-256color
tmuxを使用している場合は、代わりにtmux.confにこれを追加します
set -g default-terminal "tmux-256color"
GNU screenの場合は、.screenrcを設定します <https://wiki.archlinux.org/index.php/GNU_Screen#Use_256_colors>
term screen-256color
注: Nvimはt_Coおよびその他のt_xxターミナルコードを無視します。
NEOVIMはUTF-8文字を読み取ることができません
コマンドラインから以下を実行します
locale | grep -E '(LANG|LC_CTYPE|LC_ALL)=(.*\.)?(UTF|utf)-?8'
結果がない場合は、UTF-8ロケールを使用していない可能性があります。次の問題を参照してください
TMUXまたはGNU SCREENのESCが遅延する
これはtmux / screenの一般的な問題ですhttps://www.google.com/?q=tmux%20vim%20escape%20delayhttps://github.com/tmux/tmux/issues/131#issuecomment-145853211も参照)。対応するタイムアウトを低い値(10〜20ミリ秒)に調整する必要があります。
.tmux.conf:
set -g escape-time 10
# Or for tmux >= 2.6
set -sg escape-time 10
.screenrc:
maptimeout 10
「なぜこれがVIMでは起こらないのですか?」
発生します(vim -N -u NONEを試してください)。ただし、ESCの直後にキーをすばやく押すと、VimはESCをALT(META)ではなくESCとして解釈します。カーソルを注意深く観察しない限り、遅延に気付かないでしょう。トレードオフは、VimがALT(META)キーコードを理解しないため、たとえばnnoremap <M-a>が機能しないことです。ALT(META)キーコードはNvimでは常に機能します。Vimの:help xterm-cursor-keysも参照してください。
Nvim 0.3は、ALTマッピングを完全にサポートしながら、Vimの動作を模倣します。 i_ALTを参照してください。
マウスモードが有効になっていると、GNU SCREENでESCが失われます
これは、screenのバグhttps://savannah.gnu.org/bugs/?60196が原因で発生します。マウスモードでは、screenはESCがマウスシーケンスの一部であると想定し、maptimeoutに関係なく、シーケンスの残りの部分を無制限に待機します。screenで修正されるまで、エスケープを2回押す以外に既知の回避策はありません。これにより、単一のエスケープがNvimに渡されます。
ファイルタイププラグインと自動コマンドでINPUTLIST()、ECHOMSG、...を呼び出すと機能しません
これは、Nvimがデフォルトでshortmess+=Fを設定するためです。Vimはset shortmes+=Fで同じように動作します。これを改善する計画はありますが、その間、回避策として、set shortmess-=Fを使用するか、次のようにunsilentを使用してください。
unsilent let var = inputlist(['1. item1', '2. item2'])
autocmd BufNewFile * unsilent echomsg 'The autocmd has been fired.'
G:CLIPBOARD設定が使用されていません。
クリップボードプロバイダーがすでにロードされている場合は、設定後にリロードする必要があります。次の設定を使用してください。
let g:clipboard = { 'name' : ... }
if exists('g:loaded_clipboard_provider')
  unlet g:loaded_clipboard_provider
  runtime autoload/provider/clipboard.vim
endif
または、g:clipboardに割り当てるときに自動的にリロードする場合
function! s:clipboard_changed(...) abort
  if exists('g:loaded_clipboard_provider')
    unlet g:loaded_clipboard_provider
  endif
  runtime autoload/provider/clipboard.vim
endfunction
if !exists('s:loaded")
  call dictwatcheradd(g:, 'clipboard', function('s:clipboard_changed'))
endif
let s:loaded = v:true

ビルドの問題 faq-build

一般的なビルドの問題
古いビルド環境が原因で失敗するのを避けるため、make distclean && make を実行してください。
LOCAL.MK の設定が反映されない
CMake はビルド設定をキャッシュするため、local.mk を変更した後は rm -r build && make を実行する必要がある場合があります。
CMAKE エラー
configure_file ファイルの設定に問題が発生しました
これはおそらくパーミッションの問題です。ルートユーザーとして make を実行した後に、権限のない make を実行すると発生する可能性があります。これを修正するには、rm -rf build を実行して再試行してください。
ヘルプタグの生成に失敗しました
"ヘルプタグの生成に失敗しました" というエラーで再インストールが失敗する場合は、以前にインストールしたランタイムディレクトリを削除してみてください (ビルド中に CMAKE_INSTALL_PREFIX が設定されていない場合、デフォルトは /usr/local/share/nvim です)。
rm -r /usr/local/share/nvim
RPCにJSONを使用しないのはなぜですか?
JSON はバイナリデータを簡単かつ効率的に処理できません。
JSON の仕様は曖昧です: https://seriot.ch/parsing_json.php
X の代わりに Lua を組み込むのはなぜですか?
Lua は非常に小さな言語であり、組み込みに最適です。 Python/Ruby/etc の最大の利点は、膨大なライブラリのコレクションですが、これは Nvim には関係ありません。Nvim は「バッテリー込み」のライブラリであり、別の標準ライブラリを導入するのは冗長です。
Lua 5.1 は完全な言語であり、構文は固定されています。これは後方互換性にとって優れています。
Nvim は、C の代替として内部的に Lua も使用しています。 Python や Vim9script のような遅い言語とは異なり、追加のパフォーマンスが役立ちます。
LuaJIT は、地球上で最速のランタイムの 1 つであり、Python および "Vim9script" https://vimhelp.org/vim9.txt.html よりも 10 倍、Vimscript よりも 100 倍高速です。
Python/JS は、サイズと移植性の点で Lua よりもコストがかかり、Python/JS ベースのエディターはすでに多数存在します。そのため、Python/JS を使用すると、Nvim は大きくなり、移植性が低下し、差別化できない機能と引き換えになります。
関連項目
Lua 5.3+ ではなく Lua 5.1 を使用する理由
Lua 5.1 は 5.3 とは異なる言語です。 Lua 組織は新しいバージョンごとに破壊的な変更を加えているため、5.3 に切り替えた (アップグレードではなく切り替え) 場合でも、5.4、5.5 などで次の新しい言語を作成したときに何も得られません。そして、Lua 5.3+ よりもはるかに価値のある LuaJIT を失うことになります。
Lua 5.1 は完全な言語です。それを「アップグレード」するには、構文ではなくライブラリを追加します。 Nvim 自体は Lua のかなり優れた「標準ライブラリ」であり、私たちはそれを成長させ、強化し続けます。このコンテキストでは、Lua のルールを変更しても何も得られません。
NeoVim は、Vimscript を直接実行する代わりに、Vimscript を Lua に変換しますか?
私たちは vim9jit https://github.com/tjdevries/vim9jit を使用して Vim9script (Vim9 の Vimscript バリアント) を Lua にトランスパイルし、これを使用して Vim9 プラグイン https://github.com/neovim/neovim/pull/21662 を Nvim Lua に移植する実験を行っています。
レガシー Vimscript をトランスパイルする予定はありません。
プラグインの作成者は、プラグインを Vimscript から Lua に移植することを推奨されていますか? Vimscript は無期限にサポートされる予定ですか? (#1152)
テキスト編集タスクのための貴重な DSL https://en.wikipedia.org/wiki/Domain-specific_language である Vimscript を非推奨にする理由はないと考えています。 Vimscript の互換性を維持することは、既存の Vim プラグインの大規模な移行よりもコストがかかりません。
Vimscript から Lua への移植は、それ自体のためには何も得られません。 Nvim は、何千もの Vim プラグインに費やされた作業を活用しながら、新しいタイプのプラグインと統合を可能にするために、Vim のフォークです。
メイン
コマンド一覧
クイックリファレンス