Risposte:
Sono sicuro che ci sono altri modi per farlo ... ma il comando principale che vuoi è :r[ead]
che inserisce l'output di un comando nel buffer.
Quindi, per inserire solo il nome del file:
:r! echo %
E, per includere il percorso completo:
:r! echo %:p
Per maggiori informazioni:
:help read
:help filename-modifiers
Il nome file corrente si trova nel "%
registro, quindi è possibile inserirlo (in modalità inserimento) con <c-r>%
; il percorso completo può essere inserito con <c-r>=expand("%:p")
. Potresti farne una macro se la usi spesso. Per ulteriori, trucchi simili, vedi :h expand
e :h "=
.
<c-r>
specifica che il carattere successivo è un registro.
"%p
in modalità normale o visiva.
Come si può vedere :h registers
, il "%
registro contiene il nome del file corrente. Il :pu[t]
comando inserisce il contenuto di un registro nel testo.
Quindi, per inserire il nome del file effettivo è possibile digitare uno di questi, in modalità di comando:
:put %
o
"%p
Per inserire il nome file con il percorso completo, digitare
:put=expand('%:p')
in modalità comando.
Ulteriori informazioni:
:h pu[t]
Digitando "rp
è possibile incollare il contenuto del registro "r
.
:put "%:p"
non sembra funzionare per me. Sembra funzionare solo con expand () , come in :put =expand('%:p')
:, il che lo rende non meno ingombrante di <c-r>=expand('%:p')
sfortunatamente.
Un modo semplice è eseguire:
!!echo %
!!
sta sostituendo la riga corrente con il risultato del comando che la segue.
%
viene sostituito dal nome del file modificato nel comando in modo che questo inserisca effettivamente quel nome nel file modificato.
Il nome file è quello passato al comando vi (m) e potrebbe contenere un percorso relativo o assoluto. Se si desidera eliminarlo e conservare solo il nome del file, eseguire
!!basename %
Se è necessario farlo frequentemente, potrebbe essere utile associare una sequenza di tasti a ciò che si desidera, come da http://vim.wikia.com/wiki/Insert_current_filename
inserisce il nome file corrente senza l'estensione nella posizione del cursore, quando si è in modalità inserimento.
:inoremap \fn <C-R>=expand("%:t:r")<CR>
Per mantenere l'estensione utilizzare:
:inoremap \fn <C-R>=expand("%:t")<CR>
Per inserire il percorso assoluto della directory in uso il file:
:inoremap \fn <C-R>=expand("%:p:h")<CR>
Per inserire il percorso relativo della directory in uso il file:
:inoremap \fn <C-R>=expand("%:h")<CR>
Soprattutto funzionano direttamente vim
per la sessione, oppure puoi metterlo nel .vimrc
(dove i due punti iniziali sulla linea sono opzionali).
Stavo cercando su Google un modo più semplice per inserire il nome del file corrente (senza percorso o estensione) nella posizione corrente (nessuna nuova riga, nessuna sostituzione della riga corrente). Quindi, combinando le risposte precedenti e questo link , questo è quello che stavo cercando.
In modalità inserimento :
<C-R>=expand("%:t:r")
Quindi la prossima volta (con il comando già nella cronologia):
<C-R>=<UP>
<c-r>
mappato come il comando redo?