È possibile rinominare il file che sto modificando da Vim? Attualmente quello che faccio è uscire da Vim, rinominare il file e riaprirlo da Vim.
È possibile rinominare il file che sto modificando da Vim? Attualmente quello che faccio è uscire da Vim, rinominare il file e riaprirlo da Vim.
Risposte:
È possibile salvare il file con un nome diverso utilizzando :w
. Ma questa operazione non rimuoverà il vecchio file e il "vecchio" file rimarrà nel tuo buffer, quindi eventuali modifiche verranno applicate al tuo "vecchio" file.
:saveas
salva il tuo nuovo file e lo apre in un nuovo buffer. Ma non cancella il vecchio file.
Uso tpope / vim-eneuch per i :Move
file.
: Sposta: rinomina un buffer e il file sul disco contemporaneamente.
:w
o :saveas
è che perderà l'autorizzazione di esecuzione se si modifica uno script. netrw
Rinomina manterrà le autorizzazioni.
È possibile passare a Netrw e rinominare il file lì.
Se il file che stai modificando si trova nella directory corrente, quindi esegui:
:edit .
Passare al file, premere Re modificare il nome. Premere Enterper modificare il file.
C'è però un avvertimento: il buffer originale rimane nell'elenco dei buffer. Se passi ad esso, è vuoto.
Se il file che stai modificando si trova in una directory diversa, puoi passare alla directory del file con:
:cd %:p:h
Se non si desidera modificare la directory per l'intera sessione di Vim ma solo per il buffer corrente, è possibile invece:
:lcd %:p:h
:edit %:p:h
sembra funzionare.
:E
aprirà anche netrw
Sto usando il plug-in Rename2 per questo per anni. Rinomina sia il buffer corrente, sia il file sul disco:
:Rename {newname}
EDIT: ho trovato questo un .vimrc
file su github :
function! RenameFile()
let old_name = expand('%')
let new_name = input('New file name: ', expand('%'), 'file')
if new_name != '' && new_name != old_name
exec ':saveas ' . new_name
exec ':silent !rm ' . old_name
redraw!
endif
endfunction
map <leader>n :call RenameFile()<cr>
Il modo migliore è usare :Move
, come diceva OrangTux. Per completezza, puoi anche eseguire i comandi del terminale negli editor vi usando un bang ( !
) in modalità comando.
:!mv {current_file} {new_name}
:e {new_name}
Tuttavia, questo metodo non rimuove il vecchio buffer dall'elenco dei buffer.