VSCodeのVimのuコマンドでUndoしてもファイルが編集扱いになる事象の対策

技術

はじめに

VSCodeのVim拡張機能を使用すると、uコマンドでVimのUndo機能が使用できます。

しかし、このUndo機能でもとに戻しても、VSCode上ではファイルが編集扱いになってしまい、地味なストレスでした。

こんな感じです。

動作環境

・Kubuntu 22.04

・VSCode 1.90.0

対策

設定を変更し、Vim拡張のUndo,RedoをVSCodeのUndo,Redoに変更することで解決できます。

Setting.jsonで下記設定を追加します。

"vim.normalModeKeyBindingsNonRecursive": [
  {
    "before" : ["u"],
    "commands" : ["undo"]
  },
  {
    "before" : ["<C-r>"],
    "commands" : ["redo"]
  },
],

この設定を行うと、uコマンドのUndo機能がVim拡張機能のUndo機能ではなく、VSCodeのUndo機能に変更されます。ですので、VSCodeの「Ctrl+z」と同じになるため、Undoでファイルを元に戻した際に編集扱いにならなくなります。

(設定後)

上記で自分が解決したいことは完了したのですが、RedoについてもVSCodeのRedoにする設定を行っています。

参考

VSCodeのVimキーバインドでVSCode本体のUndo/Redoを使う - Qiita
はじめにVSCodeVimのデフォルトのUndo/Redoは、拡張機能側の独自実装なので、本来のVSCodeのUndo/Redo機能とは挙動が多少異なることがある。Undoで変更前の状態に戻して…
VSCodeのVimプラグインでUndo/Redoの設定を調整する
私はVSCodeでVimプラグインを使っている。VSCodeのVimを使っていて微妙に困るのが、Vim経由でUndoをすると、自分の想定しているものより多くの変更がもとに戻ってしまうことだ。この問題は開発元でもIssueとして認識されている...

おわりに

上記の事象は地味なストレスだったのですが、最初は「こういう仕様かも」と思っており、そのままにしていました。ちゃんと調べるものですね。こういう些細なストレスは積み重なると大きくなってしまうので、今回対策できて良かったです。

スッキリしました。