Respostas:
Você pode adicionar um prefixo com M-x string-rectangle
, ao qual está vinculado C-x r t
. Isso faz parte de uma série de comandos que opera em seleções retangulares ; este insere texto em todas as linhas do retângulo.
Comece definindo a marca no início da primeira linha e mova o cursor para o primeiro caractere da última linha que você deseja prefixar:
*Hello
There
▮I am some code
Em seguida C-x r t
, use , digite seu prefixo ( I said
) e pressione RET
. Isso adiciona o texto a cada linha do retângulo:
I said Hello
I said There
I said I am some code
Se você não alinhar o cursor na mesma coluna da sua marca, ele substituirá a parte do retângulo:
*Hello
There
I am▮ some code
com o mesmo comando resulta em:
I said o
I said e
I said some code
M-x string-insert-rectangle
. É muito semelhante, mas string-insert-rectangle
insere no início de cada linha da seleção, enquanto string-rectangle
substitui ; portanto, com o último, você precisa ser mais preciso sobre sua seleção, se não deseja substituir nada.
Você pode usar o modo de cursores múltiplos para colocar um cursor em cada linha. Em seguida, qualquer texto digitado será inserido em cada linha.
Você começaria com o ponto no início do trecho de código:
▮Hello
There
I am some code
Então bata C->duas vezes. (Essa é a associação de teclas sugerida; você deve configurá-la por conta própria.) Isso cria dois cursores extras nas duas linhas a seguir:
▮Hello
▮There
▮I am some code
Então digite I said
. O texto será adicionado em cada linha:
I said ▮Hello
I said ▮There
I said ▮I am some code
Por fim, pressione RETpara sair do modo de múltiplos cursores e deixar o ponto no último cursor:
I said Hello
I said There
I said ▮I am some code
Aqui está um vídeo que mostra como funciona.
Outra opção é usar macros, que podem lidar com mais tarefas do que seleções retangulares ou vários cursores, mesmo que seja um pouco mais complicado para esse caso específico.
Posicione o cursor no início da primeira linha e pressione F3para iniciar a gravação, insira o texto, mova o cursor para o início da próxima linha e pressione F4para parar a gravação. Agora pressione F4novamente para repetir a macro, C-2 F4repetir duas vezes ou C-0 F4repetir até que seja encontrado um erro (como ficar sem linhas).
Você pode instalar o mal e fazê-lo de várias maneiras semelhantes ao vi - prefiro a seleção visual de blocos usando Ctrl+ Vpara marcar cada linha e depois Shift+ Ipara inserir e digite o texto que deseja inserir e, finalmente, pressione ESCpara sair do modo de inserção e o texto será anexado a cada linha. Isso é muito parecido com as seleções de retângulo do emacs, mas com poucas teclas.
Isso é muito semelhante à resposta de artagnon, mas replace-regexp
não está vinculado a nenhuma chave.
Então, na verdade, eu uso o query-replace-regexp
que é vinculado por padrão C-M-%
e, em seguida, substituo ^
pelo prefixo fornecido I said
e digito !
para substituir todos sem solicitar mais.
Se você cua-mode
ativou, então:
I said
como texto a ser inseridoPrefiro a cua-mode
maneira de trabalhar, em comparação com o retângulo padrão do Emacs, onde o equivalente seria:
I said
RET inserir textoEle cua-mode
salva duas teclas pressionadas em comparação com o retângulo Emacs padrão.
Mas para mim, a vantagem adicional do modo cua é que eu posso anexar texto ao retângulo (eu pessoalmente não sei como anexar texto com o retângulo Emacs padrão). Com o modo cua, é RETpressionado apenas uma tecla, inserido antes do I said
.