Wie kann ich die bearbeitete Datei umbenennen?


Antworten:


35

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.

:saveasspeichert 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 :MoveDateien.

: Verschieben: Benennen Sie einen Puffer und die Datei auf der Festplatte gleichzeitig um.


Ein Nachteil von :woder :saveasist, dass die Ausführungsberechtigung verloren geht, wenn Sie ein Skript bearbeitet haben. netrwUmbenennen behält die Berechtigungen bei.
wisbucky

11

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

2
Gerade zu tippen :edit %:p:hscheint auch zu funktionieren.
Mladen Jablanović

:Ewird auch geöffnet netrw
wisbucky

6

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

3

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.