Abrindo um arquivo (por exemplo, o segundo caminho) encontrado por 'locate' com 'vim'

3

Quando digito algo como locate myfile.txt , obtenho:

/opt/mydir/myfile1.txt.temp
/opt/mydir/myfile1.txt.temp2
/opt/mydir/myfile1.txt
/opt/mydir/myfile1.txt.temp4

Eu gostaria de vim no caminho N -th do resultado. Como posso fazer isso sem escrever o caminho manualmente?

    
por Dean 28.09.2016 / 09:20

1 resposta

2

Faça:

vim "$(sed -n "2 {p;q}" <(locate myfile.txt))"

Aqui estou abrindo o segundo resultado separado por nova linha encontrado por locate myfile.txt com vim .

Faça disso uma função e coloque seu ~/.bashrc :

lovim () { vim "$(sed -n """ {p;q}" <(locate ""))" ;}

A função recebe o primeiro argumento como o nome do arquivo a ser pesquisado e o segundo como o número da linha resultante (arquivo) que você deseja abrir com vim .

Mais robusto , lidando com nomes de arquivos com novas linhas em seus nomes:

lovim () { vim "$(sed -nz """ {p;q}" <(locate -0 ""))" ;}

Exemplo:

lovim myfile.txt 3

abrirá o terceiro arquivo a partir do resultado de locate myfile.txt .

Escopo de expansão:

  • Adicionando algumas verificações de integridade na entrada e na saída (se o número desejado de linhas (arquivo) estiver presente, antes de alimentar a vim )
por heemayl 28.09.2016 / 12:42