Quando estou no meio de uma sequência looooong, como o seguinte
(setq Emacs-beta "Which keyboard shortcut to use for navigating out of a string")
Posso pular o arquivo antes do primeiro "
(após o Emacs-beta) com um atalho?
key-bindings
string
Dieter.Wilhelm
fonte
fonte
C-r " C-b
.Respostas:
Emacs 25 ou mais recente
Você quer
C-M-u
qual executa o comandobackward-up-list
.fonte
Emacs-24.5 -Q
uma string, mas estou usando o CMuup-list: Scan error: "Unbalanced parentheses"
:?É factível assim:
No modo lispy , pressionar pressiona [levará você ao início da lista que contém, saindo de qualquer sequência. Quando estiver no início da lista, você poderá acessar outras partes facilmente, por exemplo, para chegar ao fim da
Emacs-beta
impressão 2m.fonte
Esta é realmente uma questão de programação muito interessante do Emacs Lisp. Podemos manter char para frente ou char para trás até encontrarmos o caractere sob o cursor não fazer parte da string.
Você pode usar a face da fonte para decidir se o caractere está dentro da string. Esse é um ótimo truque que aprendi com o flyspell. Em teoria, não é perfeito, mas no mundo real funciona com quase todos os principais modos de linguagem de programação no Emacs23, Emacs24, Emacs25 .
Aqui está o código completo:
Uso:
(goto-edge-by-comparing-font-face 1)
vá para a borda direita,(goto-edge-by-comparing-font-face -1)
vá para a borda esquerdabackward-up-list
não é muito confiável do ponto de vista do usuário porque foi projetado como um comando genérico baseado emscan-sexps
. Por exemplo, para o códigoif (true) { return 'hello world'; }
no modo js2, ele moverá o foco para o{
caractere em vez do primeiro caractere de aspas simples. Para códigoprintf("hello world")
no modo c ++, não funcionará. Eu testei com Emacs 24.5fonte
backward-char
ouforward-char
se você mover o cursor para o lado da borda.)
. Portanto, dependendo dos modos, seu código tem comportamentos diferentes.Aqui está mais uma maneira (que eu costumo usar mais) apenas pela variedade. A solução não é específica para cadeias, mas também funciona para este caso de uso.
iy-go-to-char
(também disponível no Melpa).iy-go-to-char-backward
eiy-go-to-char
às ligações preferidas. Para fins de explicação, digamos que você esteja vinculadoiy-go-to-char-backward
aC-c C-,
eiy-go-to-char
paraC-c C-.
.Agora, se você estiver dentro da string, você chamaria
iy-go-to-char-backward
e digitaria"
.Seria assim
C-c C-, "
. Se vocêiy-go-to-char-continue-when-repeating
definiu comot
(padrão), pressionar"
mais uma vez levará você a uma"
ocorrência de char antes disso e assim por diante.Se você estiver dentro da string e agora quiser ir para o final da string, você chamaria
iy-go-to-char
e digitaria"
.Seria assim
C-c C-. "
. Se vocêiy-go-to-char-continue-when-repeating
definiu comot
(padrão), pressionar"
mais uma vez o levará à próxima"
ocorrência de char.fonte