3

Vimpulse をインストールした Emacs を使用しています。Ctrl一人でたくさん書くときは/ -KeyでやりたいAlt。しかし、テキスト構造を整理したり、他のアプリケーションで作業したりする場合は、Emacs での Vim を好みます。

問題は、それぞれの同じアクションのキーが異なることです。これにより、気付かないうちに多くの間違ったキーストロークが行われています。では、Emacsでは、Vim では LowerCaseKey が、Vim ではCtrlHigherCaseKeyとして -Key が行うように、何かアドバイスはありますか?KeyAlt

または、これが難しい場合は、Emacs としてキーを作成するように変更された Vimpulse を見つけることができますか?

4

2 に答える 2

2

の経験はありませんがviper-mode、私が行った限られたテストに基づいて、次のようなものが機能するようです:

(add-hook 'viper-load-hook
  #'(lambda ()
      (define-key viper-insert-basic-map (kbd "C-d") nil)
      (define-key viper-insert-basic-map (kbd "C-d C-d") 'kill-line)))

そのフックに必要なその他の定義を追加して、起動時にそれらが評価されるようにすることができます。ただし、選択したキー バインドには注意する必要があります。C-yたとえば、あなたが具体的に言及した は通常 にバインドされてyankおり、おそらくバインドを解除したくないものだと思います。また、viper-mode非常に複雑で精巧な重複するキーマップのセットを使用しているように見えるため、有効にしたい機能に応じて、別のキーマップを指定する必要がある場合があります (実際には、複数の異なるキーマップを並行して使用する必要があります)。viper-vi-global-user-map、、viper-insert-global-user-mapなど。残念ながら、それは私の専門知識 w/r/t の程度viper-modeです。

編集:申し訳ありませんが、私はあなたの要求を誤解したかもしれません. これらのキー バインドを 以外で viper-mode適用する場合は、 を使用しますglobal-set-key。つまり、次のようにします。

(global-unset-key (kbd "C-d"))
(global-set-key (kbd "C-d C-d") 'kill-line)

等々。ここでも、設定するバインディングに注意してください。describe-key(bound by default to ) を使用C-h kして、リマップするキー シーケンスが現在バインドされているものを確認します。

于 2012-06-19T02:21:52.990 に答える
0

"require 'vimpulse'" の前に .Emacs ファイルにキー バインディングを追加しようとしました。しかし、それは機能していません。そこで、「require 'vimpulse'」の後にキーバインドを追加します。次に、vimpulse がオンかオフかに関係なく、すべてを置き換えます。これはまったくエレガントなソリューションではありません。しかし、私はそれで生きていけると思います。

以下のようなバインディング:

;;remap keys like vim
(global-set-key (kbd "M-3") 'server-edit)                    ;; #
(global-set-key (kbd "M-4") 'move-end-of-line)               ;; $
(global-set-key (kbd "M-5") 'query-replace-regexp)           ;; % 
(global-set-key (kbd "M-6") 'move-beginning-of-line)         ;; ^
(global-set-key (kbd "C-w") 'forward-word)
(global-set-key (kbd "C-t") 'set-mark-command)
(global-set-key (kbd "C-y") 'kill-ring-save)
(global-set-key (kbd "C-u") 'undo)
(delete-selection-mode 1)                               ;; delete selection before yank
(global-set-key (kbd "C-p") 'yank)
(global-set-key (kbd "M-y") 'kill-region)
(global-set-key (kbd "C-x y") 'quick-copy-line)

(global-set-key (kbd "C-d") 'delete-forward-char)
(global-set-key (kbd "C-h") 'left-char)
(global-set-key (kbd "C-j") 'next-line)
(global-set-key (kbd "C-k") 'previous-line)
(global-set-key (kbd "C-l") 'right-char)
(global-set-key (kbd "M-g") 'end-of-buffer)
(global-set-key (kbd "M-j") 'delete-indentation)
(global-set-key (kbd "C-x d") 'kill-whole-line)
(global-set-key (kbd "C-x g") 'beginning-of-buffer)

(global-set-key (kbd "C-b") 'backward-word)
(global-set-key (kbd "C-`") 'bookmark-set)
(global-set-key (kbd "C-.") 'repeat)
(global-set-key (kbd "C-/") 'isearch-forward-regexp)
(global-set-key (kbd "M-m") 'bookmark-jump)
(global-set-key (kbd "M-/") 'isearch-backward-regexp)
(global-set-key (kbd "C-x m") 'bookmark-bmenu-list)
于 2012-06-19T09:32:36.103 に答える