Nvim :help
ページは、このスクリプトを使用して、ソースから tree-sitter-vimdoc パーサーを用いて生成されます。
vim-patch.sh
https://github.com/neovim/neovim/blob/master/scripts/vim-patch.sh を実行して、Vimパッチのステータスを確認してください。./scripts/vim-patch.sh -l
git clone https://github.com/neovim/neovim.git
./scripts/vim-patch.sh -l
を実行して、不足しているVimパッチのリストを表示します。8.0.0123
。./scripts/vim-patch.sh -p 8.0.0123
を実行します。git log --grep
または git log -G
を使用して、Nvim/Vimのソース履歴(削除されたコードも含む)を検索します。例: reset_option_was_set
を検索するにはgit log -p -G reset_option_was_set
--grep
や -G
のような git log
オプションを ./scripts/vim-patch.sh -L
に渡します。例: +quickfix
パッチを見つけるには./scripts/vim-patch.sh -L --grep quickfix -- src
vim-patch:8.x.xxxx
を含める必要があります(空白なし)。vim-patch:8.0.0123
のようにフォーマットします(空白なし)。runtime/
パッチのレビューのヒント https://github.com/neovim/neovim/pull/1744#issuecomment-68202876version.c: update
プルリクエストがない場合は、以下の形式でコミットメッセージに適用不可のパッチを含めてください。vim-patch:<version-or-commit> vim-patch:<version-or-commit> ...
<version-or-commit>
は有効なVimバージョン(8.0.0123
など)またはコミットID(SHA)です。各パッチは別の行に記述します。./scripts/vim-patch -p <na-patch> ./scripts/vim-patch -p <na-patch> ... ./scripts/vim-patch -P <patch> git rebase -i master
:scriptversion
に関連するもの。(NvimはVimscriptバージョン1のみをサポートします。)Vim9:
というラベルが付いたパッチでも、コードベースの他の部分に適用可能な修正が含まれている場合があるため、これらのパッチは個別に確認する必要があります。testdir/Makefile
の更新は通常適用不可です。Makefileは暗黙的にhttps://github.com/neovim/neovim/commit/8a677f8a4bff6005fa39f090c14e970c3dfdbe6e#diff-b3c6ad6680a25a1b42095879e3a87104R52 すべての test_*.vim
ファイルを見つけます。*.proto
の変更:Nvimは関数プロトタイプを自動生成します。#ifdef
の調整:たとえば、Vimはすべてのプラットフォームで FEAT_VISUAL
を有効にすることにしました - しかしNvimはすでにそれをしています。新しい FEAT_
ガードを追加することもNvimには関係ありません。src/Make_*
、 src/testdir/Make__*
if_*.c
の変更: if_python.c
などは削除されました。term.c
の変更:Nvim TUIは端末シーケンスを読み取るために libtermkey
を使用します。Vimの term.c
は削除されました。job
パッチ:APIと実装に互換性がありません。src/channel_*
、 src/job_*
、 src/testdir/test_channel_*
、 src/testdir/test_job_*
:terminal
パッチ:APIと実装に互換性がありません。src/terminal_*
、 src/testdir/test_terminal_*
defaults.vim
パッチsrc/gui_*
、 src/gvim_*
、 src/GvimExt/*
、 src/testdir/test_gui*
balloon
の変更:Nvimはバルーン機能をサポートしていません。src/beval_*
、 src/testdir/test_balloon_*
test_popupwin.vim
、 test_popupwin_textprop.vim
からの screendump テスト: https://github.com/neovim/neovim/pull/12741#issuecomment-704677141src/json*
、 src/testdir/test_json.vim
test_restricted.vim
制限モードは https://github.com/neovim/neovim/pull/11996 で削除されました。test_prompt_buffer.vim
の多くのテストでは、channel
などの互換性のないVim機能が必要です。これらは引き続き含める必要がありますが、スキップする必要があります。Filelist
、 README
、 INSTALL
、src/nvim/version.c
のVimパッチのリストは、Nvim gitログに vim-patch:xxx
トークンが存在するに基づいて自動的に更新されます https://github.com/neovim/neovim/pull/7780。src/nvim/version.c
を自分で更新しないでください。scripts/vim-patch.sh -p
は、マージの競合を回避し、パッチの移植時に時間を節約するために、意図的に version.c
を省略します。scripts/vimpatch.lua
) は、vim-patch:<hash>
ではなく、vim-patch:8.0.1206
のようなトークンのみを認識します。memory.c
https://github.com/neovim/neovim/blob/master/src/nvim/memory.c を参照してください。----------------------------------------------------------------------- Deprecated or removed Replacement ----------------------------------------------------------------------- vim_free xfree VIM_CLEAR(&foo) XFREE_CLEAR(foo) malloc alloc lalloc lalloc_id ALLOC_ONE xmalloc calloc lalloc_clear xcalloc realloc vim_realloc xrealloc mch_memmove memmove vim_memset copy_chars copy_spaces memset vim_strbyte strchr vim_strncpy strncpy xstrlcpy/xmemcpyz vim_strcat strncat xstrlcat VIM_ISWHITE ascii_iswhite IS_WHITE_OR_NUL ascii_iswhite_or_nul vim_isalpha mb_isalpha vim_isNormalIDc ascii_isident vim_islower vim_isupper mb_islower mb_isupper vim_tolower vim_toupper mb_tolower mb_toupper mb_ptr2len utfc_ptr2len mb_ptr2len_len utfc_ptr2len_len mb_char2len utf_char2len mb_char2bytes utf_char2bytes mb_ptr2cells utf_ptr2cells mb_ptr2cells_len utf_ptr2cells_len mb_char2cells utf_char2cells mb_off2cells utf_off2cells mb_ptr2char utf_ptr2char mb_head_off utf_head_off mb_tail_off utf_cp_bounds mb_strnicmp2 utf_strnicmp MB_STRNICMP2 utf_strnicmp mb_lefthalve grid_lefthalve mb_fix_col grid_fix_col utf_off2cells grid_off2cells ml_get_curline get_cursor_line_ptr ml_get_cursor get_cursor_pos_ptr ml_get_curline_len get_cursor_line_len ml_get_cursor_len get_cursor_pos_len screen_char ui_line screen_line grid_put_linebuf screen_* (most functions) grid_* update_prepare, update_finish #9484 removed; use update_screen only ARRAY_LENGTH ARRAY_SIZE vim_strsave_escape_csi vim_strsave_escape_ks vim_unescape_csi vim_unescape_ks gettail path_tail mch_isFullName path_is_absolute script_do_profile profile_init -----------------------------------------------------------------------
mb_
関数を置き換える際には、utf_
と utfc_
の違いに注意してください。 また、間接呼び出し構文 (*mb_ptr2len)(...)
は、通常の関数呼び出し utfc_ptr2len(...)
に置き換える必要があります。----------------------------------------------------------------------- Data type Format (Vim source) Portable format (Nvim source) ------------ ----------------------- ---------------------------------- long long "%lld" "%" PRId64 size_t "%ld" "%zu" linenr_T "%ld" "%" PRIdLINENR -----------------------------------------------------------------------
ga_init2
は ga_init
に名前が変更され、元の ga_init
はなくなりました。src/testdir/*.in
) は、Luaテストに変換する必要があります ( #1286 https://github.com/neovim/neovim/issues/1286 および #1328 https://github.com/neovim/neovim/pull/1328 を参照)。 レガシーテストを移行するためのチェックリスト https://github.com/neovim/neovim/blob/master/test/README.md#checklist-for-migrating-legacy-tests を参照してください。src/testdir/*.vim
) はLuaに変換しないでください。「新しいスタイル」のVimテストは古いものよりも高速であり、変換には他のことに費やすべき時間と労力がかかります。 test/old/testdir/*.vim
にコピーしてください。enc_utf8
または has_mbyte
をチェックする条件は廃止されました(「true」の場合のみ適用されます)。CSI
をチェックする必要があるのは、FEAT_GUI
を使用したVimのみです。 CSI
はNvimの先行入力バッファでは特別な意味を持ちません。( https://github.com/neovim/neovim/pull/16936 も参照)list_T
および listitem_T
)の管理は https://github.com/neovim/neovim/pull/7708/ で変更されました。 「古い」使用方法に対する lint がありますが、ここに最も重要な変更点を示します。list_T list
:リストlistitem_T li
:list
のアイテムint val
lv_copyID
の値-------------------------------------------------------------------------------------- Old New Comment ------------------------------- ------------------------------------------------------ list->lv_first tv_list_first(list) list->lv_last tv_list_last(list) li->li_next TV_LIST_ITEM_NEXT(list, li) To be avoided if possible, must use list which li belongs to. li->li_prev TV_LIST_ITEM_PREV(list, li) To be avoided if possible, must use list which li belongs to. Suggestion by @ZyX-l: Use TV_LIST_ITER or indexing instead of the previous two calls. list->lv_len tv_list_len(list) list->lv_lock tv_list_locked(list) &li->li_tv TV_LIST_ITEM_TV(li) list->lv_refcount++ tv_list_ref(list) val = list->lv_copyID val = tv_list_copyid(list) list->lv_copyID = val tv_list_set_copyid(list, val) for (li = list->lv_first; TV_LIST_ITER_CONST(list, li, Use TV_LIST_ITER(...) if you need to li != NULL && another_cond; { if (another_cond) {break;} code}) modify list items (note: assigning copyID is also modification and this happens li = li->li_next) code always when recursively traversing a list). --------------------------------------------------------------------------------------
typval.h
および typval.c
を参照してください。{Only when compiled with ...}
: ほとんどの機能はオプションではなくなりました(https://github.com/neovim/neovim/wiki/Introduction を参照)。$VIMRUNTIME/lua/vim/filetype.lua
を参照)。 ロジックは3つのテーブルにエンコードされており、優先順位の高い順にリストされています(最初に一致したものが返されます)。 1. リテラルのフルパスまたはベース名ルックアップ用の filename
。 2. 高速ルックアップ用に最適化された lua-patterns に対するファイル名またはパスのマッチング用の pattern
。 3. リテラル拡張子ルックアップ用の extension
。$VIMRUNTIME/lua/vim/filetype/detect.lua
に実装されています。"*[mM]akefile" regex -> "makefile", "Makefile" filenames "*.js\c" regex -> "js", "jS", "Js", "jS" extensionsパターンマッチングにはいくつかの違いがあります。
"*/debian/changelog" -> "/debian/changelog$" "*/bind/db.*" -> "/bind/db%."