Подтвердить что ты не робот

Ctrl + U в emacs при использовании злых привязок клавиш

Я использую замечательный пакет зла ​​для привязок vim в emacs.

Неправильная клавиша Ctrl + U. Это по-прежнему префикс emacs, а не "вверх".

У кого-нибудь есть решение для этого в некотором lisp для моего .emacs?

Спасибо.

4b9b3361

Ответ 1

есть переменная, которую вы можете добавить в свой .emacs

(setq evil-want-C-u-scroll t)

он должен появиться перед вызовом (require 'evil).

Ответ 2

В качестве альтернативы, достаточно просто определить свои собственные привязки клавиш, а API evil достаточно богат, чтобы сделать его очень простым:

(define-key evil-normal-state-map (kbd "C-u") 'evil-scroll-up)
(define-key evil-visual-state-map (kbd "C-u") 'evil-scroll-up)
(define-key evil-insert-state-map (kbd "C-u")
  (lambda ()
    (interactive)
    (evil-delete (point-at-bol) (point))))

Мне пришлось пройти этот маршрут, так как evil-want-C-u-scroll не работал правильно для меня.

Ответ 3

Vim C-u - это страница с половинным экраном вверх. Я воспроизвел его, используя следующее:

(define-key evil-normal-state-map (kbd "C-u") 'evil-scroll-up)

Из C-h f evil-scroll-up,

(COUNT с прокруткой зла)

Прокручивает окно и курсор COUNT линии вверх. Значение по умолчанию - половина экрана.

Ответ 4

Чтобы получить bling ответ на работу для тех, кто использует John Wiegley use-package, убедитесь, что вы определили его в разделе :init, например:

(use-package evil
 :ensure t
 :init
 (setq evil-want-C-u-scroll t)
 :config
 (evil-mode 1)
 ;; snip...
)

НТН

Ответ 5

Чтобы добавить к melleb ответ, я также определил комбинацию клавиш, когда evil-want-C-u-scroll:

(use-package evil
:ensure t
:init
(setq evil-want-C-u-scroll t)

(when evil-want-C-u-scroll
   (define-key evil-insert-state-map (kbd "C-u") 'evil-scroll-up)
   (define-key evil-normal-state-map (kbd "C-u") 'evil-scroll-up)
   (define-key evil-visual-state-map (kbd "C-u") 'evil-scroll-up)
   (define-key evil-motion-state-map (kbd "C-u") 'evil-scroll-up))

:config
(evil-mode 1)
...
)

Это работает для GNU Emacs 24.4.1

Ответ 6

Во-первых, чтобы ответить на ваш вопрос:

(define-key evil-insert-state-map  "\C-u" 'previous-line)
(define-key evil-normal-state-map  "\C-u" 'previous-line)
(define-key evil-replace-state-map "\C-u" 'previous-line)
(define-key evil-visual-state-map  "\C-u" 'previous-line)
(define-key evil-motion-state-map "\C-u" 'previous-line)

Так как я не могу проверить себя (нет зла), попробуйте, возможно, следующее, если они не работают:

Заменить

(define-key evil-motion-state-map "\C-u" 'previous-line)

С

(define-key evil-motion-state-map "cu" 'previous-line)

Сделайте это в зависимости от того, какой режим зла вам нужен/он необходим.

Кроме того, возможно, существует "злая" версия up, вы можете захотеть связать ее.

Кроме того, исправьте меня, если я ошибаюсь, но я уверен, что злые "корабли" с функциональным/полезным "вверх" где-то в этих привязках клавиш, возможно, читают его где-то.

Ответ 7

vim C-u не является "предыдущей строкой", это больше похоже на страницу вверх. Я не знаю, как копировать точное поведение, но вы можете просто попробовать C-b (злой-прокрутить страницу) или отобразить C-k, C-j, чтобы перейти вверх/вниз по 10 линиям.

(global-set-key (kbd "C-k") (lambda () (interactive) (previous-line 10)))
(global-set-key (kbd "C-j") (lambda () (interactive) (next-line 10)))

Ключ C-u также очень важен для Emacs, поэтому вы, вероятно, не должны его перезаписывать.