Nie mam teraz Emacsa do wypróbowania, ale wyobrażam sobie, skip-syntax-forwardże to zrobiłbym.
wvxvw
1
Próbowałem, (skip-syntax-forward "^\"")który może przeskoczyć do następnego podwójnego cudzysłowu, ale nie pomija znaku zmiany znaczenia, np. „Ciąg \” nie może zostać pominięty? ”
AhLeung 28.09.17
Odpowiedzi:
9
M-C-f(lub M-C-right) forward-sexppowinien to zrobić.
Sugeruję wypróbowanie wszystkich dobrze znanych poleceń ruchu z prefiksem M-C-zamiast C-.
Powinieneś również wspomnieć o backward-sexpzobowiązaniu do M-C-b.
Timm
@ Timim Myślałem, że byłoby raczej oczywiste, że ktoś wypróbowuje polecenia ruchu z prefiksem M-Czamiast, C-jeśli się wie M-C-f. Okej - wymienię to w odpowiedzi.
Tobias
1
Wydaje się, że forward-sexpi czy backward-sexpzatrzymać się na białych znakach w cytowanym ciągu?
AhLeung,
2
Zawsze mam problem z zapamiętywaniem powiązań dla forward-sexpi backward-sexp, i chciałem czegoś, co działałoby bardziej jak %robi w trybie poleceń Vima. W pewnym momencie dodałem to do mojej konfiguracji (docstring mówi parens, ale działa dla dowolnego nawiasu lub cytatu), a teraz jestem zadowolony:
;;; PAREN-BOUNCE
;;;; originally ganked from <http://elfs.livejournal.com/1216037.html>
(defun genehack/paren-bounce ()
"Bounce from one paren to the matching paren."
(interactive)
(let ((prev-char (char-to-string (preceding-char)))
(next-char (char-to-string (following-char))))
(cond ((string-match "[[{(<\"']" next-char) (forward-sexp 1))
((string-match "[\]})>\"']" prev-char) (backward-sexp 1))
(t (error "%s" "Not an expression boundary.")))))
;;;; bindings
(global-set-key (kbd "C-%") 'genehack/paren-bounce)
(global-set-key (kbd "C-5") 'genehack/paren-bounce)
Podaj pełną odpowiedź w swoim poście. Odpowiedzi tylko z linkiem są odpowiednie dla komentarzy, ale nie dla odpowiedzi.
Dan
sp-beginning-of-sexpi sp-end-of-sexpsą bardzo blisko tego, czego chcę. Mam nadzieję, że można je połączyć w jedną funkcję (np. sp-matching-sexp), Więc muszę zapamiętać tylko jedno skrót klawiszowy. Może spróbuję napisać funkcję elisp. Daj mi znać, jeśli ktoś to zrobił wcześniej. Dzięki.
skip-syntax-forward
że to zrobiłbym.(skip-syntax-forward "^\"")
który może przeskoczyć do następnego podwójnego cudzysłowu, ale nie pomija znaku zmiany znaczenia, np. „Ciąg \” nie może zostać pominięty? ”Odpowiedzi:
M-C-f(lub M-C-right)
forward-sexp
powinien to zrobić.Sugeruję wypróbowanie wszystkich dobrze znanych poleceń ruchu z prefiksem
M-C-
zamiastC-
.backward-sexp
backward-up-list
forward-list
źródło
backward-sexp
zobowiązaniu doM-C-b
.M-C
zamiast,C-
jeśli się wieM-C-f
. Okej - wymienię to w odpowiedzi.forward-sexp
i czybackward-sexp
zatrzymać się na białych znakach w cytowanym ciągu?Zawsze mam problem z zapamiętywaniem powiązań dla
forward-sexp
ibackward-sexp
, i chciałem czegoś, co działałoby bardziej jak%
robi w trybie poleceń Vima. W pewnym momencie dodałem to do mojej konfiguracji (docstring mówi parens, ale działa dla dowolnego nawiasu lub cytatu), a teraz jestem zadowolony:źródło
Sugeruję używanie pakietu smartparens do wszystkich takich celów. Krótkie wprowadzenie znajduje się tutaj: https://ebzzry.io/en/emacs-pairs/ .
źródło
sp-beginning-of-sexp
isp-end-of-sexp
są bardzo blisko tego, czego chcę. Mam nadzieję, że można je połączyć w jedną funkcję (np.sp-matching-sexp
), Więc muszę zapamiętać tylko jedno skrót klawiszowy. Może spróbuję napisać funkcję elisp. Daj mi znać, jeśli ktoś to zrobił wcześniej. Dzięki.