Ist es möglich, die Datei, die ich bearbeite, in Vim umzubenennen? Derzeit beende ich Vim, benenne die Datei um und öffne sie erneut.
Ist es möglich, die Datei, die ich bearbeite, in Vim umzubenennen? Derzeit beende ich Vim, benenne die Datei um und öffne sie erneut.
Antworten:
Sie können die Datei mit unter einem anderen Namen speichern :w
. Durch diesen Vorgang wird die alte Datei jedoch nicht entfernt, und die "alte" Datei bleibt in Ihrem Puffer, sodass alle Änderungen auf Ihre "alte" Datei angewendet werden.
:saveas
speichert Ihre neue Datei und öffnet sie in einem neuen Puffer. Die alte Datei wird jedoch nicht gelöscht.
Ich benutze tpope / vim-eneuch für :Move
Dateien.
: Verschieben: Benennen Sie einen Puffer und die Datei auf der Festplatte gleichzeitig um.
:w
oder :saveas
ist, dass die Ausführungsberechtigung verloren geht, wenn Sie ein Skript bearbeitet haben. netrw
Umbenennen behält die Berechtigungen bei.
Sie können zu Netrw wechseln und die Datei dort umbenennen.
Befindet sich die von Ihnen bearbeitete Datei im aktuellen Verzeichnis, gehen Sie wie folgt vor:
:edit .
Navigieren Sie zu der Datei, drücken Sie Rund ändern Sie den Namen. Drücken Sie Enter, um die Datei zu bearbeiten.
Es gibt jedoch eine Einschränkung: Der ursprüngliche Puffer verbleibt in der Pufferliste. Wenn Sie dorthin wechseln, ist es leer.
Wenn sich die Datei, die Sie bearbeiten, in einem anderen Verzeichnis befindet, können Sie mit den folgenden Schritten in das Dateiverzeichnis wechseln:
:cd %:p:h
Wenn Sie das Verzeichnis nicht für die gesamte Vim-Sitzung ändern möchten, sondern nur für den aktuellen Puffer, können Sie stattdessen Folgendes tun:
:lcd %:p:h
:edit %:p:h
scheint auch zu funktionieren.
:E
wird auch geöffnet netrw
Ich benutze dafür seit Jahren das Rename2-Plugin . Es benennt sowohl den aktuellen Puffer als auch die Datei auf der Festplatte um:
:Rename {newname}
EDIT: Ich fand dies eine .vimrc
Datei auf 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>
Der beste Weg ist zu benutzen :Move
, wie OrangTux sagte. Der Vollständigkeit halber können Sie Terminalbefehle in vi-Editoren auch mit einem bang ( !
) im Befehlsmodus ausführen .
:!mv {current_file} {new_name}
:e {new_name}
Diese Methode entfernt jedoch nicht den alten Puffer aus Ihrer Pufferliste.