← Vim道場

同じキーで動きが違うところ

Neovimには、Vimと同じキーなのに既定の動きが違うものがあります。設定を移してきたつもりでも動きがずれるのはここが原因なので、代表的な2つを実際に押して確かめます。

第8章 Neovimだと違うところレッスン 36 / 36

Y はなぜ変わったのか

Vimでは D が「行末まで削除」、C が「行末まで書き換え」なのに、Y だけが「行全体をコピー」でした。この不揃いを直したのがNeovimの既定で、Yy$ になっています。行ごとコピーしたいときは yy を使います。

Vim側で同じ挙動にしたいときは nnoremap Y y$ を書きます。逆にNeovimでVimの挙動に戻したいなら vim.keymap.set('n', 'Y', 'yy') です。

Q はExモードから置き換わった

VimでQを押すと入るExモードは、コマンドを1行ずつ打ち続ける古いモードです。ほとんど使われないうえ、押し間違えて入ってしまうと抜け方が分からず戸惑う原因になっていました。Neovimではここに「最後に記録したマクロを再生」が割り当てられています。

@@ との違いは何を指すかです。@@ は最後に実行したマクロ、Q は最後に記録したマクロを再生します。記録した直後に流すなら、レジスタ名を打たずに済む Q のほうが速く済みます。

ほかにも既定が違うところ

このエディタでは扱えませんが、ほかにも Ctrl-l が検索ハイライトの解除を兼ねる、:substitute の結果がその場で見える(inccommand)、hlsearchincsearch が最初から有効、といった違いがあります。Vimの .vimrc をそのまま持ってくると設定が重複するのはこのためです。

実機での確認は :help nvim-defaults が早く、変更の一覧は :help news にまとまっています。

設定を移すときに気をつけるところ

Vimの .vimrc をそのままNeovimに持ち込むと、Neovimが既定で有効にしている設定を書き直すことになります。害があるわけではありませんが、Neovim側の既定が変わったときに古い値で上書きしてしまう可能性があります。

移すときは、まず :help nvim-defaults で既定になっているものを確認し、そこに載っている設定は書かない、という整理をすると設定ファイルが短くなります。syntax onset hlsearch のあたりが該当します。

キーの割り当てを合わせるか、分けるか

両方を使う人には、どちらかに寄せる方法と、環境ごとに違うまま覚える方法があります。寄せる場合はNeovim側をVimに合わせるほうが安全です。Neovimの新しい既定は追加されたものが多いので、Vim側に無い機能を前提にすると、Vimを開いたときに手が止まります。

逆に、サーバー上のVimは素のまま使うと割り切って、手元のNeovimだけを整えるという考え方もあります。どちらでも構いませんが、決めずに両方を少しずつ触ると、どちらでも思い出せない状態になります。

違いを確認する手順

あるキーの挙動が違うと感じたら、まず :help でそのキーを引きます。Neovimのヘルプには、Vimと違う箇所に注記が入っていることが多く、そこから :help vim-differences に辿れます。

この練習ページで扱っているのは gcc[␣]␣YQ の4つです。どれも押した結果が静かに違うだけでエラーにならないので、気づかないまま覚え違いをしやすいところを選んでいます。

このレッスンで扱うキー

キー動き
Yカーソルから行末までコピー
Q最後に記録したマクロを再生

関連記事

レッスン一覧へ戻るキーの逆引き一覧検定を受ける