Eu recentemente perguntei:
Como adicionar um prefixo para cada linha?
Então vá do código abaixo:
I said Hello
I said There
I said I am some code
Para codificar como:
Hello
There
I am some code
Agora, como faço para excluir n número de caracteres de uma linha?
text-editing
editing
Lucas
fonte
fonte
Respostas:
É ainda mais fácil! Mais uma vez, use comandos retangulares . Vá para um canto do retângulo que deseja excluir, pressione
C-SPC
para definir a marca. Vá para o outro canto do retângulo e pressioneC-x r d
(delete-rectangle
). Por exemplo, vá para a primeira linha em que deseja atuar, pressioneC-a
ouhome
para ir para o início da linha, vá para a última linha em que deseja atuar, para ir para o canto inferior direito e depois para excluir.C-u number C-f
C-x r d
Se a última linha tiver menos do que o número desejado de caracteres, pode ser mais conveniente usar os cantos inferior esquerdo e superior direito. Como alternativa, você pode inserir caracteres indesejados (isso é útil se a primeira linha e a última linha forem mais curtas).
Você pode usar
C-x r k
para matar o retângulo, o que permite puxá-C-x r y
lo ( ) mais tarde (vá para o canto superior esquerdo do local onde você deseja inseri-lo).Você também pode usar
C-x r t
(string-rectangle
) e inserir uma sequência vazia.Os comandos de retângulo são baseados nas posições da coluna. Se você deseja excluir n caracteres, em vez de n colunas (o que faz diferença com caracteres de várias colunas, como guias), você pode usar a substituição de expressão regular : substitua
^.\{42\}
por nada para excluir os primeiros 42 caracteres de cada linha.fonte
Outra possibilidade: eu realmente gosto de usar vários cursores para tarefas como esta. Disponível na
package.el
MELPA, tornou-se parte indispensável do meu emacs. Eu simplesmente selecionariaI said
(e possivelmente incluiria a quebra de linha antes dela), usariaM-x mc/mark-all-like-this
e estaria a caminho. Se você deseja um controle mais refinado, pode usarmc/mark-next-like-this
oumc/mark-next-lines
.Minhas combinações de teclas:
O obrigatório Emacs Rocks! episódio: http://emacsrocks.com/e13.html
fonte
Se você
cua-mode
ativou, então:Prefiro a
cua-mode
maneira de trabalhar, em comparação com o retângulo padrão do Emacs, onde o equivalente seria:Ele
cua-mode
salva três pressionamentos de tecla em comparação com o retângulo Emacs padrão.fonte
Por uma questão de completude: a exclusão dos três primeiros caracteres de cada linha (formalmente: a partir do momento ou na região) pode ser feita substituindo regexp
^...
(ou mais geralmente :) por^.\{3\}
uma string vazia.Explicação: em regexen,
^
significa "início de linha",.
significa "qualquer caractere" e\{n\}
significa " n repetições da coisa anterior".Isso tem um benefício adicional de ser interativo (a menos que você pressione
!
, o quequery-regexp-replace
substitui tudo a partir de agora sem mais perguntas).fonte
E mais uma possibilidade:
F3C-aC-3C-dC-nF4
grava uma macro de teclado, dizendo basicamente "vá para o início da linha, exclua três caracteres e vá para a próxima linha". Em seguida, você pode reproduzi-lo até o final do buffer C-uF4, ou C-xC-kraplicá-lo às linhas da região. Isso tem uma desvantagem: ele será interrompido quando qualquer linha tiver menos de 3 caracteres.
fonte
Se for apenas uma linha, você pode zap-to-char com Mz assumindo que esse caractere não se repete entre o ponto e o ponto que você deseja excluir. Para alguns casos, isso é mais rápido do que criar uma região.
fonte