web-dev-qa-db-ja.com

邪悪なキー割り当てを使用している場合、emacsでCtrl + U

Emacsのvimバインディングに素晴らしいevilパッケージを使用しています。

正しくない鍵は Ctrl+U。 「up」ではなく、emacs接頭辞です。

誰かが私の.emacsの一部のLISPコードでその解決策を持っていますか?

ありがとう。

39
justingordon

.emacsに追加できる変数があります

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

(require 'evil)を呼び出す前に表示する必要があります。

43
bling

または、独自のキーバインドを定義するのも簡単で、evil AP​​Iは非常に豊富なので、非常に簡単です。

(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が正しく機能していなかったため、このルートをたどる必要がありました。

13
Kevin Ushey

VimのC-uは半画面のページアップです。私は以下を使用してそれを複製しました、

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

C-h f evil-scroll-upから

(邪悪なスクロールアップCOUNT)

ウィンドウとカーソルCOUNT行を上にスクロールします。デフォルトは画面の半分です。

6
Shrikant Sharat

John Wiegley use-package を使用しているすべてのユーザーに対して bling の回答を取得するには、それを:initセクションのように:

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

HTH

5
Melle

VimのC-uは「前の行」ではなく、ページアップのようなものです。正確な動作を再現する方法はわかりませんが、C-b(evil-scroll-page-up)またはマップC-kC-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にとって非常に重要なので、とにかく上書きしないでください。

1
tungd

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で機能します

1
tomcat

まず、あなたの質問に答えます:

(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の「悪」なバージョンがあるかもしれません。代わりにそれをバインドしたいかもしれません。

また、私が間違っている場合は修正してください。ただし、キーバインドのどこかで機能的/便利な「アップ」を備えた邪悪な「船」は、どこかで読み上げられる可能性があります。

0
PascalVKooten