2013-02-11 10 views
5

Chcę odwzorować C-f C-b jako przesuwanie do przodu i do tyłu o ustaloną liczbę wierszy w pliku.Definiowanie wiązania klucza z argumentami

Zrobiłem to:

(global-set-key (kbd "C-f") 'next-line) 
(global-set-key (kbd "C-b") 'previous-line) 

ale nie wiem jak określić argument przed poleceniem z next-line. Myślę, że powinienem użyć digit-argument, ale nie jestem w stanie napisać polecenia w prawidłowy sposób.

+0

możliwe duplikat [błąd w emacsie elisp podczas wiązania lambda klucza] (http://stackoverflow.com/questions/1250846/error-in-emacs-elisp-when -binding-a-lambda-a-key) –

+0

ok (klucz globalny (kbd "Cf") " (lambda() (interaktywna) (forward-line 5))) działa. Chociaż nie w pełni odpowiada na moje pytanie, w jaki sposób wiązałbym coś w rodzaju M-5 Cn lub bardziej skomplikowanych makr bez konieczności używania lambda, prawdopodobnie brakuje mi czegoś naprawdę podstawowego na działanie elisp ... – igon

Odpowiedz

7

Jedną z możliwych alternatyw byłoby zdefiniować nową funkcję:

(defun my-next-line() 
    (interactive) 
    (next-line 5)) 

(global-set-key (kbd "C-f") 'my-next-line) 

W przeciwnym razie, jeśli jest to po prostu coś, co można osiągnąć za pomocą klawiatury możesz używać

M-x name-last-kbd-macro 

i zapisać w swoim pliku .emacs:

, a także, aby emacs zaimplementował tę funkcję. Będzie to po prostu nazwę nadaną w wywołaniu nazwa-last-kbd-macro

+0

Nie wiedziałem o makrze wstawiania, jest to bardzo przydatne. Dziękuję – igon

+0

Próbowałem tego z argumentem łańcuchowym, w pracach, ale nie zapominaj (tak jak zrobiłem to za pierwszym razem) o cytatach. Dziękuję :) – boclodoa

12

Zmieniłeś swoje pytanie będzie o tym, jak wiążą się bezpośrednio do kluczowych sekwencji

To wiąże Cc l Cu 5 do Cn

(global-set-key (kbd "C-c l") (kbd "C-u 5 C-n")) 
+0

Miło, nie wiedziałem tego. Wielkie dzięki za tę podpowiedź. – mikyra

+0

Miło, nie wiedziałem o tym! – PascalVKooten

+0

To doskonały sposób dodawania nowych skrótów klawiaturowych, gdy już wiesz o naciśnięciach klawiszy i usuwa krok dla nazewnictwa makr. – aartist

Powiązane problemy