Come posso rinominare il file che sto modificando?


Risposte:


35

È 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.

:saveassalva il tuo nuovo file e lo apre in un nuovo buffer. Ma non cancella il vecchio file.

Uso tpope / vim-eneuch per i :Movefile.

: Sposta: rinomina un buffer e il file sul disco contemporaneamente.


Un aspetto negativo di :wo :saveasè che perderà l'autorizzazione di esecuzione se si modifica uno script. netrwRinomina manterrà le autorizzazioni.
wisbucky,

11

È 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

2
Anche la digitazione diretta :edit %:p:hsembra funzionare.
Mladen Jablanović,

:Eaprirà anche netrw
wisbucky il

6

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 .vimrcfile 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>

3

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.