470 Stimmen

Umbenennen der aktuellen Datei in Vim

Wie sollte ich meine aktuelle Datei in Vim umbenennen?

Zum Beispiel:

  • Ich bearbeite person.html_erb_spec.rb
  • Ich möchte, dass sie umbenannt wird in person.haml_spec.rb
  • Ich würde gerne weiter bearbeiten person.haml_spec.rb

Wie würde ich das auf elegante Weise tun?

18voto

Maxim Kim Punkte 6012
sav person.haml_spec.rb | call delete(expand('#'))

13voto

Yossarian42 Punkte 1792
:!mv % %:h/new_name

Register % enthält den Namen der aktuellen Datei. '%:h' zeigt das Verzeichnis 'head' an, das die aktuelle Datei enthält, z.B.: %:h gibt zurück. /abc/def wenn Ihr vollständiger Dateipfad lautet abc/def/my.txt

11voto

Jezen Thomas Punkte 13328

Es gibt eine Funktion in Gary Bernhardts .vimrc die dies übernimmt.

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>

8voto

Alex Punkte 1548

Vim hat eine rename Funktion, die aber leider die Historie nicht beibehält.

Die einfachste betriebssystemunabhängige Methode, eine Datei umzubenennen, ohne den Verlauf zu verlieren, wäre:

:saveas new_file_name
:call delete(expand('#:p'))

expand('#:p') gibt den vollständigen Pfad der älteren Datei zurück.

Utilice :bd # wenn Sie auch die ältere Datei aus der Pufferliste löschen wollen.

Oder erstellen Sie ein Plugin

Wenn Sie einen schnellen Befehl zum Umbenennen der Datei verwenden wollen, fügen Sie eine neue Datei unter ~/.vim/plugin mit dem folgenden Inhalt hinzu:

function! s:rename_file(new_file_path)
  execute 'saveas ' . a:new_file_path
  call delete(expand('#:p'))
  bd #
endfunction

command! -nargs=1 -complete=file Rename call <SID>rename_file(<f-args>)

Der Befehl Rename hilft Ihnen, eine Datei schnell umzubenennen.

8voto

shender Punkte 1145

Es gibt ein deutlich größeres Plugin namens vim-eunuch von Tim Pope, das eine Umbenennungsfunktion sowie einige andere nützliche Funktionen enthält (löschen, finden, alles speichern, chmod, sudo edit, ...).

Um eine Datei in vim-eunuch umzubenennen:

:Move filename.ext

Im Vergleich zu rename.vim:

:rename[!] filename.ext

Spart ein paar Tastenanschläge :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X