Neovimは、世界で最も愛されているエディターです。これは科学的に証明されています。

以下は、Neovim 2022(Nvim 0.8)の開発におけるハイライトの一部です。
まずは見た目から!
:set laststatus=3
'winbar'は、各ウィンドウの上部に追加のステータスラインのように表示されます。laststatus=3を補完します。set winbar=%f
set laststatus=3
'winbar'と'statusline'は、マウスクリック領域のサポートを得ました(「tabline」は2016年からこの機能を備えていました)。
:set cmdheight=0
:set mousescroll=ver:5,hor:2
:set rnu nu
:let &stc='%#NonText#%{&nu?v:lnum:""}%=%{&rnu&&(v:lnum%2)?"\ ".v:relnum:""}%#LineNr#%{&rnu&&!(v:lnum%2)?"\ ".v:relnum:""}'
:set jumpoptions=view

vim.lsp.start({ name = 'godot', cmd = vim.lsp.rpc.connect('127.0.0.1', 6008) })
LspAttach、LspDetach。例vim.api.nvim_create_autocmd('LspAttach', {
group = yourGroupID,
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
your_callbac_func(client, args.buf)
end
}
vim.lsp.get_active_clients()はフィルタリングを学習しました(これはLua stdlibの標準パターンになります)。get_active_clients({id=42})
get_active_clients({bufnr=99})
get_active_clients({name='tsserver'})
:set diffopt+=linematch:60

vim.g.editorconfig_enable = false
:substitute(:s/foo/bar)の効果を表示する組み込みの'inccommand'機能(2017年以降)を拡張するものです。:normalおよびマクロのプレビューを追加します。:normal、:globalなどのライブプレビューの基盤を構築します。vim.api.nvim_create_user_command(
'MyCmd',
my_cmd,
{ …, preview = my_cmd_preview })
:writeコマンドは、++pフラグを取得したため、これにより、親/dir/が存在しない場合は作成されます。:edit parent/dir/file.txt
:write ++p
$XDG_CACHE_HOME(〜/.cache)ではなく、保存するようになりました。この変更はmacOS/unixのみに影響し、Windowsの場所は変更されていません。stdpath('log')を使用することもできます。:help :Man)のgOは、ロケーションリストにアウトライン(目次)を表示します。アウトラインには、フラグもリストされるようになりました。
before:
9.0ms: sourcing …/runtime/filetype.vim
after:
1.3ms: sourcing …/runtime/filetype.lua
nvim --startuptimeは、Luaのrequire()時間を報告するようになりました。000.010 000.010: --- NVIM STARTING ---
000.198 000.188: event init
...
026.333 001.109 001.101: require('vim.lsp.protocol')
028.144 000.423 000.423: require('vim.lsp._snippet')
...

mouse=nvi
Type ":" (cmdline-mode) to temporarily disable mouse. Right-click shows a popup menu.
Try it!
nvim_cmd([list])と「ユーザーcmdプレビュー」の基礎を提供します!そして、カスタムcmdline(:)の動作を定義するのに非常に役立ちます。:echo nvim_parse_cmd('.,$g/foo/bar', {})
{
'cmd': 'global',
'args': ['/foo/bar'],
'mods': {…},
'magic': {'file': v:false, 'bar': v:false}
}
nvim_cmd()を使用して、system([...])のように、Vimのレガシーコマンドを構造化された方法で呼び出します。fnameescape()は不要:特殊文字は、magicパラメーターによって制御されます。nvim_cmd({cmd='vimgrep', args={'/%s/j', '**'}}, {})
vim.fs.find()は、LSP構成で一般的な「ルートファイル」を見つけるための正規の方法になりました。vim.cmdは、Luaのnvim_cmdラッパーです。文字列ではなく関数としてExコマンドを呼び出すことができます。vim.cmd.colorscheme('nightfox')
「Luaプラグインは基本的にvimプラグインと同じですが、ファイル拡張子が
.vimではなく.luaであり、ファイルにVimscriptではなくLuaコードが含まれている点が異なります。」
オンラインNvimドキュメントの自動生成は、古いAWKスクリプトをLua + tree-sitterに置き換えることで書き直されました。素晴らしいものができました。
古いレイアウト(左)と新しいレイアウト(右)を比較してください

Nvimは、jobstart()および:terminalジョブで$NVIM環境変数を設定するようになり、子プロセスがNvimの子であることを明確に示すヒントが提供されます。競合する「二重目的」を持っていた古い$NVIM_LISTEN_ADDRESSは、子に渡されなくなりました。
Nvim UIは単なる(反転された)プラグインです。そして、今ではnvim自体が自己ホストUIになりました。ターミナルでnvimを実行すると、nvim --embed子プロセスとしてTUIが開始されます。

Nvim GUIと同様に、nvim TUIを任意のNvimサーバーに接続して、そのUIを確認できます。今すぐ試すことができます。
./fooでサーバーを起動します(現在のディレクトリにfooファイルを作成します)nvim --listen ./foo
./fooと同じディレクトリ内)、nvimをサーバーに接続しますnvim --remote-ui --server ./foo
:help 'insertmode'を参照してください。:help lsp)とほぼ冗長であるため、削除されました。