Após algumas pesquisas, soube que :echo @%
exibe o nome do arquivo atual na linha inferior da tela do vim.
Gostaria de despejar o nome do arquivo (com e sem o caminho completo) no conteúdo do arquivo sem sair vim
.
Há alguma maneira de fazer isso?
Tenho certeza de que existem outras maneiras de fazer isso ... mas o comando principal que você deseja é :r[ead]
inserir a saída de um comando no buffer.
Então, para inserir apenas o nome do arquivo:
:r! echo %
E, para incluir o caminho completo:
:r! echo %:p
Para mais informações:
:help read
:help filename-modifiers
O nome do arquivo atual está no "%
registro, para que você possa inseri-lo (enquanto estiver no modo de inserção) com <c-r>%
; o caminho completo pode ser inserido com <c-r>=expand("%:p")
. Você pode fazer uma macro se a usar com frequência. Para mais, truques semelhantes, consulte :h expand
e :h "=
.
<c-r>
mapeado como o comando refazer?<c-r>
especifica que o próximo caractere é um registro."%p
nos modos normal ou visual.Como pode ser visto em
:h registers
, o"%
registro contém o nome do arquivo atual. O:pu[t]
comando insere o conteúdo de um registro no texto.Portanto, para inserir o nome do arquivo real, você pode digitar um destes, no modo de comando:
ou
Para inserir o nome do arquivo com o caminho completo, digite
no modo de comando.
Mais informações:
Digitando,
"rp
você pode colar o conteúdo do registro"r
.fonte
:put "%:p"
não parece trabalhar para mim. Parece funcionar apenas com expand () , como em:put =expand('%:p')
:, o que o torna não menos complicado do que<c-r>=expand('%:p')
infelizmente.Uma maneira simples é executar:
!!
está substituindo a linha atual pelo resultado do comando a seguir.%
é substituído pelo nome do arquivo editado no comando, para que ele efetivamente insira esse nome no arquivo editado.O nome do arquivo é aquele que você passou para o comando vi (m) e pode conter um caminho relativo ou absoluto. Se você desejar removê-lo e reter apenas o nome do arquivo, execute
fonte
Se você precisar fazer isso com frequência, pode ser útil vincular uma sequência de chaves ao que você deseja, conforme http://vim.wikia.com/wiki/Insert_current_filename
Acima, todos trabalham diretamente
vim
para a sessão ou você pode colocá-lo no.vimrc
(onde os dois pontos principais na linha são opcionais).fonte
Eu estava pesquisando no Google uma maneira mais simples de inserir o nome do arquivo atual (sem caminho ou extensão) na posição atual (sem nova linha, sem substituir a linha atual). Então, combinando respostas anteriores e este link , é isso que eu estava procurando.
No modo de inserção :
Da próxima vez (com o comando já no histórico):
fonte