Estou usando vino Ubuntu 12.10. Alguns arquivos são muito longos, então quando eu quero ir para o meio do arquivo, tenho que descer a página ou rolar para baixo.
Existe um atalho VIM para ir para um número de linha exato?
especialistas da @vim. Isso é realmente específico de Ubuntu- / bash- / Linux (de acordo com as tags OP)? Não estou usando muito o vim, mas para meu uso não notei a menor diferença entre o Ubuntu / CentOS / Suse / Windows.
Alexander Malakhov
Respostas:
143
:150
irá levá-lo para a linha 150 em vi
:1500
irá levá-lo para a linha 1500 em vi
De acordo com os comentários que você pode tentar
150G
para chegar à linha 150. que tem menos toques de tecla do que
:150Enter
se você não tiver certeza de qual linha está tentando
:set nu!
observe o:
se você quiser ver sempre a linha, considere editar seu perfil do vim. Mais frequente
vi ~/.vimrc
e adicione
:set nu!
e escrever e sair
:wq
#or you could use :x
isso pode ser feito fora do vi. Por exemplo, se eu quiser excluir a linha 5000 em um arquivo de texto, posso usar uma linguagem de script. Por exemplo, usando sed seria o seguinte
sed -i '5000d;' inputFile.txt
para excluir a linha 10 a 20, seria
sed -i '10,20d;' inputFile.txt
observe que o -i editará o arquivo no local. Sem o -i, ele irá para o stdout. Tente. você pode redirecionar o stdout para um arquivo
sed '5001,$d;' inputFile.txt >> appenedFile.txt
isso pode ter muita coisa acontecendo aqui para você. isso exclui a linha 5001 para $. Com $ sendo o fim do arquivo. >> será anexado a um arquivo. onde as> cria um novo arquivo.
se você está curioso para quantas linhas existem em um arquivo você pode querer digitar wc -l inputFile.txt
parte disso pode parecer terrivelmente trivial, mas se você está tentando editar um arquivo com 50.000 linhas, pode levar um bom minuto para abrir e percorrer. onde se você sabe que quer apenas deletar a última linha, você pode usar o sed e fazer isso em uma fração do tempo.
O sed também pode pesquisar e substituir dentro de um arquivo. Mas talvez awk, perl ou python também possam ser uma solução viável.
mas no geral, você pode querer encontrar um bom tutorial sobre o vi. milhares existem. Eu consultaria o google. Talvez encontre um VIM Cheatsheat.
reserve alguns minutos e comece a ler este documento. Ele recompensa você a longo prazo pela eficiência na edição do arquivo de configuração, especialmente.
Em um terminal aberto, em um shell bash, simplesmente edite seu arquivo executando:
$ vi +N yourfile
Onde Nestá o número da linha.
Para visualizar ( moreou less;):
$ less +N yourfile
$ more +N yourfile
O sinal +significa que o comando deve ser executado no início . Portanto, se o comando for apenas um número, então vi, lesse more, saltará para isso como um número de linha .
Mas você também pode usar /regexpara encontrar a primeira ocorrência de uma string ou regex específica:
$ less +/Error logfile
$ less -i +/error logfile # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...
Respostas:
irá levá-lo para a linha 150 em vi
irá levá-lo para a linha 1500 em vi
De acordo com os comentários que você pode tentar
150G
para chegar à linha 150. que tem menos toques de tecla do que :150Enter se você não tiver certeza de qual linha está tentando
:set nu!
observe o:
se você quiser ver sempre a linha, considere editar seu perfil do vim. Mais frequente
e adicione
:set nu!
e escrever e sair
:wq #or you could use :x
isso pode ser feito fora do vi. Por exemplo, se eu quiser excluir a linha 5000 em um arquivo de texto, posso usar uma linguagem de script. Por exemplo, usando sed seria o seguinte
sed -i '5000d;' inputFile.txt
para excluir a linha 10 a 20, seria
sed -i '10,20d;' inputFile.txt
observe que o -i editará o arquivo no local. Sem o -i, ele irá para o stdout. Tente. você pode redirecionar o stdout para um arquivo
sed '5001,$d;' inputFile.txt >> appenedFile.txt
isso pode ter muita coisa acontecendo aqui para você. isso exclui a linha 5001 para $. Com $ sendo o fim do arquivo. >> será anexado a um arquivo. onde as> cria um novo arquivo.
se você está curioso para quantas linhas existem em um arquivo você pode querer digitar
wc -l inputFile.txt
parte disso pode parecer terrivelmente trivial, mas se você está tentando editar um arquivo com 50.000 linhas, pode levar um bom minuto para abrir e percorrer. onde se você sabe que quer apenas deletar a última linha, você pode usar o sed e fazer isso em uma fração do tempo.
O sed também pode pesquisar e substituir dentro de um arquivo. Mas talvez awk, perl ou python também possam ser uma solução viável.
mas no geral, você pode querer encontrar um bom tutorial sobre o vi. milhares existem. Eu consultaria o google. Talvez encontre um VIM Cheatsheat.
fonte
150G
faz o mesmo que:150
. Não é mais rápido, mas pode ser mais fácil de lembrar.<CR>
em consideração.Outras dicas do vim: no modo de comando
fonte
reserve alguns minutos e comece a ler este documento. Ele recompensa você a longo prazo pela eficiência na edição do arquivo de configuração, especialmente.
fonte
Em um terminal aberto, em um shell bash, simplesmente edite seu arquivo executando:
Onde
N
está o número da linha.Para visualizar (
more
ouless
;):O sinal
+
significa que o comando deve ser executado no início . Portanto, se o comando for apenas um número, entãovi
,less
emore
, saltará para isso como um número de linha .Mas você também pode usar
/regex
para encontrar a primeira ocorrência de uma string ou regex específica:$ less +/Error logfile $ less -i +/error logfile # -i Causes less's searches to ignore case $ vi +/open.*myfile myprog...
fonte
Outro conselho: como você é novo no vim, correr
vimtutor
pode ser muito útil.fonte