はじめに
VSCodeからNeovimに移行して2週間ほど経ちました。設定も煮詰まってきて、VSCodeと比べてNeovimのここが使いにくいという箇所も大分減ってきました。
しかし、VSCodeでよく使っていたクリップボードの比較機能がNeovimに無いことが不満だったので、それを再現してみました。
Vim初心者なので、お手柔らかにお願いします。
クリップボードとの比較とは
VSCodeのコマンドパレットから使えるあの機能のことです。
正式なコマンド名はFile: Compare active file with clipboard.
日本語だと、クリップボードとアクティブファイルの比較。
このような感じで、新しいファイルを作らずともファイルの比較ができます。また、差分も強調表示されます。
できたもの
設定方法
以下のコードをお好きなところに貼ってください。
私はLazyvim
を使っているので、nvim/lua/config/keymaps.lua
に書きました。
local function compare_to_clipboard()
local ftype = vim.api.nvim_eval("&filetype")
vim.cmd(string.format(
[[
vsplit
wincmd l
enew
setlocal buftype=nofile | set filetype=%s
normal! P
diffthis
wincmd h | diffthis
]],
ftype
))
end
vim.keymap.set("n", "<leader>bc", compare_to_clipboard, { desc = "Compare to clipboard" })
このコードは元ネタがあります。
こちらの方は予めビジュアルモードで選択したテキストと、クリップボードを比較するものであり、また比較中にファイルを編集できないので、合わないなと感じ、改良しました。
VSCodeに近い操作感に近づけられたと思います。
比較画面の閉じ方
ctrl + l
で右側のウインドウに移動後、スペース(リーダーキー) b D
で閉じられます。
元ネタのコードはq
を押すだけで、比較画面を閉じられます。
簡単に閉じられる方法を実装しても良かったのですが、私は実装しませんでした。
心残り
VSCodeはクリップボードの方の右側のウインドウを編集しようとしても、編集できなくなっているのですが、私のNeovim設定だと右側のウインドウも編集できてしまいます。
右側のウインドウの方だけ、readonlyにして、左側は編集可能にするにはどうしたらよいのでしょう。
どなたかご教授お願い致します。
おまけ
私のNeovimとWeztermの設定貼っておきます。
宣伝
ほぼ毎日ライブコーディングとかしてます。
最近はAI Vtuber作ってます。