O cursor pode voltar à posição anterior?

24

Posso fazer meu cursor em um buffer retornar à sua última posição? (de preferência sem ter que marcar a posição anterior)

Por exemplo, o Ca pula para o início da linha atual, posso voltar para onde estava antes?

Por exemplo, quando Cx Cf para abrir um arquivo em um diretório diferente, desejo voltar à posição anterior no nome do caminho.

Obrigado.

Tim
fonte
Quais são as C-x xcorridas exchange-point-and-mark? O Emacs não armazena todos os movimentos do cursor, apenas aqueles que você especificou. Adicionar e estourar marcas é uma maneira de armazenar o histórico de movimentos do cursor. emacswiki.org/emacs/MarkCommands - aqui está uma boa discussão sobre o assunto.
wvxvw
1
C-x xé indefinido. M-x exchange-point-and-mark: nenhuma marca definida neste buffer.
Tim
@ Tim É C-x C-x. Também é necessário definir uma marca primeiro para que isso funcione. Para definir uma marca explicitamente, você faz C-SPC. Para voltar à marca anterior, você faz C-u C-SPC.
precisa saber é o seguinte
Sim, desculpe, foi C-x C-x. C-x xé minha própria ligação.
wvxvw
1
Não tenho certeza se isso é uma duplicata, mas emacs.stackexchange.com/q/3421/454 pode ser útil.
Phillip #

Respostas:

30

Aqui estão algumas ligações relacionadas a marcas que podem ajudá-lo:

  • C-SPC- definir marca e ativar região (vinculado a set-mark-command)
  • C-SPC C-SPC - definir marca (ativa e desativa a região)
  • C-x C-x - vinculado a exchange-point-and-mark
  • C-u C-SPC - mover para a marca anterior

Confira a documentação da Mark para entender melhor este tópico.

Kaushal Modi
fonte
9
Observe que os comandos que podem mover o cursor a uma distância arbitrária (mas potencialmente grande) de onde você estava (normalmente) pressionam automaticamente a marca primeiro. Assim, você pode voltar frequentemente para onde estava antes com um single C-u C-SPC.
Phillip #
Com counsel-mark-ringele também é possível listar todas as marcas e navegá-los com cursores, recebendo uma visualização em tempo real no buffer.
Arialdo Martini 02/07
6

Se você estiver editando nos locais em que pousar, goto-last-changefará isso por você. http://www.emacswiki.org/emacs/GotoLastChange

homem incandescente
fonte
2
No Spacemacs é obrigado ag ;
iLemming
1

Você pode usar `Registros '.

Do arquivo de informações do emacs

13.1 Salvando posições em registros

C-x r <SPC> R' Record the position of point and the current buffer in register R (ponto a registrar ').

C-x r j R' Jump to the position and buffer saved in register R (pular para registrar ').

Digitando C-x r <SPC>' (ponto a registrar '), seguido pelo caractere `R', salva a posição do ponto e o buffer atual no registro R. O registro retém essas informações até você armazenar outra coisa nele.

O comando `Cx rj R 'muda para o buffer gravado no registrador R e move o ponto para a posição gravada. O conteúdo do registro não é alterado, portanto você pode pular para a posição salva várias vezes.

Se você usar C-x r j' to go to a saved position, but the buffer it was saved from has been killed,Cx rj ', tentará criar o buffer novamente visitando o mesmo arquivo. Obviamente, isso funciona apenas para buffers que estavam visitando arquivos.

Joe
fonte