在visual mode下d和x的区别

这两个键不区分 normal/visual,绑定的方法不变:

 x  evil-delete-char
 d  evil-delete

再看 evil-delete-char 的定义:

(evil-define-operator evil-delete-char (beg end type register)
  "Delete next character."
  :motion evil-forward-char
  (interactive "<R><x>")
  (evil-delete beg end type register))

就是 evil-delete 的一个特例嘛。所以这两个键都是删除,区别在于删除的范围不同,visual 只不过是把删除范围可视化了。

在 vi 的世界,删除的内容都要放到 " 寄存器,而 " 寄存器正是你下次粘贴的来源,这就是你的困扰。

你可以重载 evil-delete-char/evil-delete-char 来改变这个行为,把删除内容丢掉,或者放到一个不常用的寄存器。