2013-01-13 10 views
31

Używam cudownego pakietu zła do wiązania vim w emacs.Ctrl + U w emacs podczas używania złych powiązań klawiszy

Jeden klucz, który nie jest w porządku jest Ctrl + U. Wciąż jest to przedrostek emacsa, a nie "w górę".

Czy ktoś ma rozwiązanie tego w niektórych kodu sepp dla mojego .emacs?

Dzięki.

+0

Jaką więc odpowiedź przyniosłeś? –

+1

Zobacz zaakceptowaną odpowiedź: zła-chcesz-C-u-przewiń t – justingordon

Odpowiedz

32

jest zmienna, które można dodać do listy .emacs

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

musi pojawić się przed wywołaniem (require 'evil).

+1

Co otrzymuje C-u? Czy naprawdę nie potrzebne z argumentami zła? Niektóre komendy emacs zachowują się nieco inaczej przy arg. – justingordon

+0

To całkiem niezły klucz, że to jest przed (wymaga "zła)! Umieszczam to na górze mojego pliku emacs przed załadowaniem menedżera pakietów. – justingordon

+1

To nie działa (gnu-emacs 24.3.1), jeśli używam klienta emacs (nawet jeśli serwer jest restartowany), https://gist.github.com/vrthra/9999335 – rahul

0

Po pierwsze, aby odpowiedzieć na pytanie:

(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) 

Ponieważ nie mogę sprawdzić się (nie) zła, może spróbować następujących jeśli te nie działają:

Wymień

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

Z

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

Zrób to dla jakiegoś trybu zła, który chcesz/jest to konieczne.

Co więcej, być może istnieje "zła" wersja up, możesz zamiast tego chcieć ją związać.

Także, popraw mnie, jeśli się mylę, ale jestem całkiem pewny, że złe "statki" z funkcjonalnym/użytecznym "do góry" gdzieś w tych klawiaturach, może gdzieś odczytywane.

+0

Miałem na myśli "w górę", nie poprzednią linię, jak w domyślnej funkcji vim/less. – justingordon

+0

spróbuj zdefiniować (kbd "C-u") zamiast "\ C-u" lub "cu" lub whatelse. – desudesudesu

0

Vim's C-u nie jest "poprzednią linią, bardziej przypomina stronę w górę. Nie wiem, jak odtworzyć dokładnie to zachowanie, ale możesz po prostu sprobować: C-b (złe przewijanie strony do góry) lub mapy C-k, C-j, aby przejść w górę/w dół o 10 linii.

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

Kluczem C-u jest również bardzo ważne, aby Emacs więc prawdopodobnie nie usunie go i tak.

5

Vim's C-u jest stroną pół ekranu. I replikowane go przy użyciu następujących,

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

Od C-h f evil-scroll-up,

(zło-przewijania-up COUNT)

Przewija okno i liniach kursor zliczanie w górę. Domyślnie jest to połowa ekranu.

+0

Myślę, że ta odpowiedź jest niekompletna - nie spowoduje to włączenia C-u w trybach innych niż tryb normalny. –

+0

'C-u' już ma to zachowanie w trybie wizualnym. W trybie wstawiania, w vimie, nie przewija w górę, usuwa z powrotem do początku linii/wejścia do wstawienia. Nie jestem pewien, w jaki sposób można replikować to zachowanie w emacs. –

+0

Masz rację, przedefiniowując 'C-u', ponieważ w odpowiedzi wpływa również na tryb wizualny. Przyjąłem, że nie, ponieważ 'mapa-zła-wizualna-mapa' nie została zaktualizowana, ale z jakiegoś powodu jest to niepotrzebne. –

10

Alternatywnie, jest to dość łatwe do zdefiniowania własnych skrótów klawiszowych, a evil API jest na tyle bogaty, aby to bardzo proste:

(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)))) 

Musiałem tę drogę jako evil-want-C-u-scroll nie funkcjonuje prawidłowo dla mnie .

+0

Prawie idealnie ... C-u w Vimie kasuje do bieżącego wcięcia przy pierwszym naciśnięciu, a następnie usuwa wcięcie po drugim naciśnięciu. –

1

W celu uzyskania bling „s odpowiedź do pracy dla każdego, useing John Wiegley na use-package, upewnij się zdefiniować w sekcji :init, tak:

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

HTH

1

Aby dodać do melleb Odpowiedź, zdefiniowałem również kluczową kombinację, gdy zło chce: Cu-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) 
... 
) 

Thi s pracuje dla GNU Emacs 24.4.1

Powiązane problemy