Como lidar com a próxima linha na macro do teclado?

12

Criei uma macro de teclado para unir linhas em um buffer usando:

F3 C-n M-x join-line RET F4.

Funciona bem, exceto quando as linhas ficam muito longas e começam a quebrar - o que torna essa macro dependente da largura do quadro. next-lineparece não ir para a próxima linha real, mas para a parte "quebra automática" da linha atual.

Como contornar esse problema?

Sébastien Le Callonnec
fonte

Respostas:

13

Você tem duas três opções:

  1. Use em next-logical-linevez de next-lineao definir a macro:

    Mova o cursor verticalmente para baixo das ARGlinhas. Isso é idêntico next-line, exceto que sempre se move por linhas lógicas, em vez de linhas visuais, ignorando o valor da variável line-move-visual.

  2. Defina line-move-visualcomo nil:

    (setq line-move-visual nil)

    Isso faz com que next-linese comporte como next-logical-linepor padrão.

  3. Ative o truncamento de linha fazendo

    M-x toggle-truncate-lines RET

    antes de gravar a macro.

itsjeyd
fonte
Perfeito! Obrigado. Gostaria de saber em que situação você prefere next-lineo comportamento atual ao next-logical-linedo, embora ...
Sébastien Le Callonnec
@ SébastienLeCallonnec Eu acho que não é um caso de uso para tudo ... e é bom saber que Emacs lida com todos eles;)
itsjeyd
1
@ SébastienLeCallonnec Erm ... ao escrever em linguagem natural? Em uma situação não orientada para a linha, pressionar <down>ou C-né geralmente esperado para fazer você descer uma linha, não para ultrapassar o limite da linha. Pense que nem todo usuário vem do bloco de notas (onde não há quebra de linha, de jeito nenhum) ... Imo, a exceção são situações onde next-logical-lineestá o comportamento esperado e, nessas situações, muitas vezes tento desabilitar visual-line-modecompletamente. E +1 em @itsjeyd, é muito bom poder ter um ou outro comportamento, dependendo da situação.
22714 Ver todas as
2
@ T.Verron Fair o suficiente. Acho que sempre pode religar C-na next-logical-line. ;)
Sébastien Le Callonnec
0

C-ae C-eambos usam um argumento de prefixo que permite pular linhas. Por exemplo, C-2 C-avai pular para o início da próxima linha e C-2 C-epular para o final da próxima linha. Um argumento de prefixo 3 move duas linhas e assim por diante. Você também pode usar argumentos negativos para ir para as linhas anteriores.

Claramente, eles não são muito úteis quando você precisa que o cursor permaneça na mesma coluna, mas acho que a maioria das minhas macros envolve ir para o início ou o fim de uma linha, então são muito convenientes.

Alan Third
fonte