Eu tentei seguir o seguinte:
Como excluir o texto selecionado no editor VI
mas
5dd
dá
E492: Não é um comando do editor: 5dd
Eu então tentei:
5d
O que exclui apenas uma única linha. Como posso excluir várias linhas?
Eu tentei seguir o seguinte:
Como excluir o texto selecionado no editor VI
mas
5dd
dá
E492: Não é um comando do editor: 5dd
Eu então tentei:
5d
O que exclui apenas uma única linha. Como posso excluir várias linhas?
Respostas:
Parece que você está inserindo os comandos no modo de comando (também conhecido como "modo Ex"). Nesse contexto :5d
, removeria a linha número 5, nada mais. Para 5dd
funcionar como pretendido - isto é, remova cinco linhas consequentes começando no cursor - digite-o no modo normal e não prefixe os comandos :
.
Acho isso mais fácil
/superuser/170795/how-can-i-select-and-delete-lines-of-text-in-vi
Você pode excluir várias linhas (intervalo) se souber os números de linha:
:[start_line_no],[end_line_no]d
Nota: d significa exclusão
Onde,
start_line_no é a linha inicial que você não deseja excluir e end_line_no é a linha final que você não deseja excluir. As linhas entre o início e o fim, incluindo o início e o fim, serão excluídas.
Por exemplo:
:45,101d
As linhas entre 45 e 101, incluindo 45 e 101, serão excluídas.
$
indicar a última linha do arquivo. Então :45,$d
, excluiria todas as linhas de 45 até o final.
/<\/div>/
:.,[end_line_no]d
Comandos listados para uso no modo normal (prefixo com :para modo de comando).
Testado no Vim.
Por valor da linha:
Por números de linha:
Backwards range given, OK to swap (y/n)?
Se você preferir um método de modo não visual e reconhecer os números das linhas, gostaria de sugerir uma outra maneira direta.
Exemplo
Quero excluir o texto da linha 45 para a linha 101.
Meu método sugere que você digite um comando abaixo no modo de comando:
45Gd101G
Diz:
Vá para a linha 45 (
45G
) e exclua o texto (d
) da linha atual para a linha 101 (101G
).
Observe que vim
você pode usar gg
no lugar de G
.
Compare com a resposta da @Bonnie Varghese, que é:
:45,101d[enter]
O comando acima de sua resposta requer digitação 9 vezes enter, incluindo , onde minha resposta requer digitação de 8 a 10 vezes. Assim, uma velocidade do meu método é comparável.
Pessoalmente, eu mesmo prefiro 45Gd101G
mais :45,101d
porque eu gosto de pau para a sintaxe de comando do vi, neste caso é:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
Pressione a Esctecla para garantir que você não esteja no modo de edição. Coloque o cursor na primeira linha a ser excluída. Enter :5dd
. A linha atual e as próximas quatro linhas devem ser excluídas.
Como alternativa, se você tiver a numeração de linha ativada ...
Pressione a Esctecla para garantir que você não esteja no modo de edição. Digite :#,#d
onde '#' significa os números das linhas inicial e final a serem excluídos.
Se você deseja excluir um intervalo APÓS um acionador de linha específico, você pode usar algo como isto
:g/^TMPDIR/ :.,+11d
Isso exclui 11 linhas (inclusive) após cada encontro de ^TMPDIR
.
Para excluir todas as linhas, use - ESC gg dG Para excluir algumas linhas, digamos 5 e use ESC 5dd
Isso pode ser feito da seguinte maneira ..