Respostas:
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>
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:
:put %
ou
"%p
Para inserir o nome do arquivo com o caminho completo, digite
:put=expand('%:p')
no modo de comando.
Mais informações:
:h pu[t]
Digitando, "rp
você pode colar o conteúdo do registro "r
.
: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:
!!echo %
!!
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
!!basename %
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
insere o nome do arquivo atual sem a extensão na posição do cursor, quando você estiver no modo de inserção.
:inoremap \fn <C-R>=expand("%:t:r")<CR>
Para manter a extensão, use:
:inoremap \fn <C-R>=expand("%:t")<CR>
Para inserir o caminho absoluto do diretório em que o arquivo está sendo usado:
:inoremap \fn <C-R>=expand("%:p:h")<CR>
Para inserir o caminho relativo do diretório em que o arquivo está sendo usado:
:inoremap \fn <C-R>=expand("%:h")<CR>
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).
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 :
<C-R>=expand("%:t:r")
Da próxima vez (com o comando já no histórico):
<C-R>=<UP>
<c-r>
mapeado como o comando refazer?