O exchange-point-and-mark
comando está vinculado C-x C-x, mas não consigo pensar em nenhum caso de uso que o torne merecedor de uma ligação tão proeminente.
Como posso usar o exchange-point-and-mark
para melhorar minha técnica de edição?
fonte
O exchange-point-and-mark
comando está vinculado C-x C-x, mas não consigo pensar em nenhum caso de uso que o torne merecedor de uma ligação tão proeminente.
Como posso usar o exchange-point-and-mark
para melhorar minha técnica de edição?
Há dois casos em que posso pensar: reativar a região e ajustar o tamanho da região.
Costumo usar essa ligação para reativar a região depois de executar algum comando que a desativa ou fazer algo que define a marca e o ponto de movimento sem ativar a região.
Por exemplo, faça um Cs e procure algo adiante. Pressione RET para sair da pesquisa e, em seguida, Cx Cx para marcar tudo de onde você iniciou a pesquisa.
Outro exemplo que faço muito quando quero incluir alguns exemplos de elisp em uma resposta do StackExchange:
O outro caso é quando você está marcando uma região e deseja estendê-la / diminuí-la. Nesse caso, é conveniente poder pular para o "outro extremo" da região, movê-lo e depois pular para trás. Se a região já estiver ativa, pressionar Cx Cx a deixará ativa, permitindo que você mova uma das extremidades.
Pergunte ao Emacs: C-h r i exchange-point-and-mark RET
ou melhor C-h r i C-x C-x RET
. Isso leva você às informações mostradas abaixo.
Isto é o que o manual do Emacs, nó Setting Mark, diz em resposta à sua pergunta:
C-x C-x
é útil quando você está satisfeito com a posição do ponto, mas deseja mover a outra extremidade da região (onde está a marca) . Se você usarC-x C-x
uma segunda vez, se necessário, coloca a marca na nova posição com o ponto de volta na sua posição original. Normalmente, se a marca estiver inativa, esse comando primeiro reativa a marca onde foi definida pela última vez, para garantir que a região fique destacada. No entanto, se você chamá-lo com um argumento de prefixo, ele deixa a marca inativa e a região sem destaque; você pode usar isso para pular para a marca de maneira semelhante aC-u C-<SPC>
.
E é isso que diz sobre isso no nó Marca de Transiente Desativado :
Desativar [
transient-mark-mode
] alterna o Emacs para um modo alternativo de operação:
Definir a marca, com comandos como
C-<SPC>
ouC-x C-x
, não destaca a região. Portanto, você não pode saber olhando onde a marca está localizada; você tem que se lembrar.A solução usual para esse problema é definir a marca e usá-la em breve, antes de esquecer onde está. Você também pode verificar onde está a marca usando
C-x C-x
, que troca as posições do ponto e da marca - consulte Definir marca .Enquanto o modo Transient Mark estiver desativado, você pode ativá-lo temporariamente usando
C-<SPC> C-<SPC>
ouC-u C-x C-x
.
e:
C-u C-x C-x
Troque ponto e marca, ative a marca e ative o modo Transient Mark temporariamente, até que a marca seja desativada em seguida. (Este é oC-x C-x
comandoexchange-point-and-mark
,, com um argumento de prefixo.)
Eu uso isso quando perdi uma seleção devido a alguma operação que a removeu e quero restaurar a seleção. Um desses cenários seria:
Isso acontece quando eu quero fazer um backup ad hoc de uma área selecionada e experimentar a cópia, como, por exemplo, eu quero fazer alguma busca e substituição, mas não consigo pensar em uma maneira de fazer isso. de uma maneira que não destrua algum texto que deveria permanecer, então eu o reverteria mais tarde da cópia.
As outras respostas focam na utilidade de C-x C-x
quando transient-mark-mode
está ativo. Mas C-x C-x
é anterior transient-mark-mode
e é útil independentemente disso.
O principal papel de C-x C-x
é trocar ponto e marca. Isso é útil quando você está editando dois pontos em um único buffer e, por algum motivo, não deseja dividir a janela atual. Faça alguma edição, ajuste a marca, vá para algum outro ponto do buffer, faça alguma edição C-x C-x
, faça alguma edição no local anterior C-x C-x
, faça mais algumas edições, nauseam. (Se você não planeja voltar ao segundo ponto, C-u C-SPC
pode ser mais intuitivo. Procure o anel de marca no manual do Emacs.)
Quando transient-mark-mode
está desativado, C-x C-x
tem outro objetivo importante: permite descobrir onde a região está. C-x C-x
, rápido vislumbre no ponto, C-x C-x
novamente.
(E caso você esteja se perguntando - sim, alguns de nós ainda preferem usar o Emacs com transient-mark-mode
pessoas desabilitadas.)