Здесь нет ошибки . Так как меня это тоже раздражало, я просто прочитал злой код, чтобы узнать, почему это происходит. Итак, вот прямая копия / вставка хорошо прокомментированной однострочной строки из моей конфигурации Emacs, которая устраняет эту проблему:
;; Imagine the following scenario. One wants to paste some previously copied
;; (from application other than Emacs) text to the system's clipboard in place
;; of some contiguous block of text in a buffer. Hence, one switches to
;; `evil-visual-state' and selects the corresponding block of text to be
;; replaced. However, one either pastes some (previously killed) text from
;; `kill-ring' or (if `kill-ring' is empty) receives the error: "Kill ring is
;; empty"; see `evil-visual-paste' and `current-kill' respectively. The
;; reason why `current-kill' does not return the desired text from the
;; system's clipboard is because `evil-visual-update-x-selection' is being run
;; by `evil-visual-pre-command' before `evil-visual-paste'. That is
;; `x-select-text' is being run (by `evil-visual-update-x-selection') before
;; `evil-visual-paste'. As a result, `x-select-text' copies the selected
;; block of text to the system's clipboard as long as
;; `x-select-enable-clipboard' is non-nil (and in this scenario we assume that
;; it is). According to the documentation of `interprogram-paste-function',
;; it should not return the text from the system's clipboard if it was last
;; provided by Emacs (e.g. with `x-select-text'). Thus, one ends up with the
;; problem described above. To solve it, simply make
;; `evil-visual-update-x-selection' do nothing:
;; (fset 'evil-visual-update-x-selection 'ignore)
Последнее предложение является ответом на вопрос о том, как « настроить его так, чтобы визуально текст заменялся последним действием копирования, в данном случае буфером обмена Windows? »
(fset 'evil-visual-update-x-selection 'ignore)
Наслаждаться.