有时候我们只想保留终端软件的中键粘贴功能,而tmux、neovim、vim都有可能映射中键粘贴,这可能会导致粘贴两次,所以我们需要禁用tmux、neovim、vim的中键粘贴,一般做法都是解绑keymap的关系。
tmux禁用鼠标中键粘贴
检查tmux是否存在中键粘贴
tmux list-keys|grep mouse
可以看到MouseDown2Pane有映射paste相关的代码,说明有中键粘贴。
bind-key -T root MouseDown2Pane select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { paste-buffer -p }
可以在配置中禁用。
在~/.tmux.conf中,添加下面的配置即可禁用中键粘贴。
# Disable the middle mouse button for pasting
unbind-key -T root MouseDown2Pane
vim/neovim禁用鼠标粘贴
vim/neovim可能还有鼠标中间的连击粘贴,所以需要都去除下。
vim
` Disable the middle mouse button for pasting
` map--mapmode nvo
map <MiddleMouse> <Nop>
map <2-MiddleMouse> <Nop>
map <3-MiddleMouse> <Nop>
map <4-MiddleMouse> <Nop>
` imap--mapmode ic
imap <MiddleMouse> <Nop>
imap <2-MiddleMouse> <Nop>
imap <3-MiddleMouse> <Nop>
imap <4-MiddleMouse> <Nop>
neovim
-- Disable the middle mouse button for pasting
-- mode "" is equal to "n", "v", "o"
vim.keymap.set({"", "c", "i"}, "<MiddleMouse>", "<Nop>")
vim.keymap.set({"", "c", "i"}, "<2-MiddleMouse>", "<Nop>")
vim.keymap.set({"", "c", "i"}, "<3-MiddleMouse>", "<Nop>")
vim.keymap.set({"", "c", "i"}, "<4-MiddleMouse>", "<Nop>")