NVim と Vim の相違点
設定
- 設定を保存するため、'.vimrc' のかわりに '.nvimrc' を使用します。
- 設定ファイル群の保存で '.vim' のかわりに '.nvim' を使用します。
- 永続セッション情報は '.viminfo' のかわりに '.nviminfo' を使用します。
デフォルトのオプション
'autoindent' のセット - インデントを現在の行から新規の行にコピーする
'autoread' のセット - 開いている未変更ファイルが Vim の外部で変更された場合自動的に読み込む
'backspace' を "indent,eol,start" に - バックスペースの働きを変える
'complete' に "i" を含まない - キーワード補完にインクルードされるファイルを含まない
'display' を "lastline" に - ウィンドウの最後の行が収まりきらなくてもできる限り表示する
'encoding' を "utf-8" に - Vim 内部の文字エンコーディングを utf-8 に統一
'formatoptions' を "tcqj" に - Vim の動作 "tcq" に加えてコメントリーダーを削除する動作 "j" を追加
'history' を 10000 に - 履歴の保存数を最大の 10000 にする
'hlsearch' のセット - 前回の検索パターンがある場合すべての一致を強調表示する
'incsearch' のセット - インクリメンタルサーチ
'langnoremap' のセット - マッピング文字に "langmap" の設定を適用しない
'mouse' を "a" に - すべての場合にマウスを有効にする、元は "" (すべて無効)
'nocompatible' を常にセット - ('compatible' を削除したため)
'nrformats' を "hex" に - 元は "octal,hex"、つまり8進数の認識を停止した
'sessionoptions' に "options" を含まない - すべてのオプションとマッピングを 'mksession' で保存しない
'smarttab' をセット - タブを打ち込んだときの 'shiftwidth' の扱いを変える
'tabpagemax' を 50 に - コマンドライン引数 '-p' や ":tab all" で開かれるタブページの最大数。Vim では 10
'tags' を "./tags;,tags" に - タグコマンドで必要なタグファイル名のリスト、Vim では "./tags,tags"
'ttyfast' を常にセット - (低速ターミナル接続という考え方がなくなった)
'viminfo' に "!" を含む - .nviminfo に大文字で始まり小文字を含まないグローバル変数を保存、復元する
'wildmenu' をセット - コマンドライン補完を拡張モードにする
'wildmode' を "list:longest,full" に - 補完モードの動作を変える、Vim では "full"
変更された機能
Nvim は、特定の機能をコンパイル時に有効/無効にする Vim とは対照的に、すべての機能をビルドします。これは、Vim の HUGE ビルド (Nvim は Vim の HUGE ビルドよりも小さいですが) のみのリリースであるようなものです。
Python インタプリタは、$PATH が通っている場合、:python と :python3 のどちらも常に利用可能で、独立したプラグインを同時に使用できます。Nvim では Python プラグインを使用するために 'neovim' pip パッケージをインストールする必要があります。
- mkdir() の動作が変更されました:
- 1. /tmp/foo が存在しない場合、/tmp に mkdir('/tmp/foo/bar', 'p', 0700) を実行すると /tmp/foo と /tmp/foo/bar がパーミッション 0700 で作成されます。Vim では /tmp/foo はパーミッション 0755 になりました。
- 2. 存在するディレクトリに 'p' で mkdir() した場合 (たとえば mkdir ('/', 'p'))、mkdir() は静かに終了します。Vim ではエラーになりました。
- 3. mkdir() のエラーメッセージは、現在 strerror() のテキストを含んでいます。
新機能
nvim-intro に膨大な新機能のリストがあります。
bracketed-paste-mode は組み込みであり、デフォルトで有効です。
- メタ (alt) コードはターミナルでも認識されています。
- <M-1>, <M-2>, ...
- <M-BS>, <M-Del>, <M-Ins>, ...
- <M-/>, <M-\>, ...
- <M-Space>, <M-Enter>, <M-=>, <M-->, <M-?>, <M-$>, ...
- 注: メタコードは大文字小文字を区別します (<M-a> は <M-A> と区別されます)。
- いくつかの 'CTRL-SHIFT-...' キーコードは 'CTRL-...' などと区別されます (ターミナルでも)。具体的には、以下が機能します:
- <C-Tab>, <C-S-Tab>
- <C-BS>, <C-S-BS>
- <C-Enter> <C-S-Enter>
- イベント
- TabNew
- TabNewEntered
- TabClosed
- ハイライトグループ
- hl-EndOfBuffer
- hl-TermCursor
- hl-TermCursorNC
存在しないレガシー機能
これらの古い Vim の機能は将来的には実装されるでしょう。しかし、現在のマイルストーンではありません。
- - vim.bindeval() (Vim 7.4 Python インターフェースの新機能)
- - if_ruby
- - if_lua
- - if_perl
- - if_mzscheme
- - if_tcl
削除された機能
これらは Vim の機能ですが、意図的に Nvim から削除されました。
- Vi 互換モード:
- ":set nocompatible" を無視
- ":set compatible" をエラーとする
- Ed 互換モード:
- ":set noedcompatible" を無視
- ":set edcompatible" をエラーとする
- 'ttyfast':
- ":set ttyfast" を無視
- ":set nottyfast" をエラーとする
- 暗号化サポート:
- 'cryptmethod'
- 'key'
- MS-DOS サポート:
- 'bioskey'
- 'conskey'
- ハイライトグループ:
- hl-VisualNOS
- その他のオプション:
- 'cpoptions' ('g', 'w', 'H', '*', '-', 'j' とすべての POSIX フラグ)
- 'guioptions' ('t' フラグ)
- 'guipty'
- 'macatsui'
- 'shelltype'
- 'shortname'
- 'termencoding'
- 'textauto'
- 'textmode'
- 'ttybuiltin'
- 'ttymouse'
- 'weirdinvert'
- その他のコマンド:
- :fixdel
- :mode (引数を受け取らない)
- :shell
- :tearoff
- その他のコンパイルフラグ:
- EBCDIC
- Emacs tags support
Nvim は組み込みの GUI を持たないので次の別名を削除: gvim, gex, gview, rgvim, rgview
"Easy モード" (eview, evim, nvim -y)
"(g)vimdiff" ("(g)nvim -d" の別名)
"Vi モード" (nvim -v)
- 以下の別名を介して nvim を起動する機能は、コマンドライン引数の使用により削除されました:
- ex -> nvim -e
- exim -> nvim -E
- view -> nvim -R
- rvim -> nvim -Z
- rview -> nvim -RZ
原文: Generated Sat Aug 8 08:17:29 UTC 2015 from 5a19585