Время от времени я хочу переименовать файл при редактировании его. Например, от .html
кому: .xhtml
или около этого.
Чтобы сделать это в Vim, я должен сделать
:saveas new_file
:!rm old_file
Есть ли встроенная команда, которая позволяет мне избавляться от :!rm
часть? Это является раздражающим для перепечатывания старого пути и имени файла.
Вы могли всегда определять свое собственное. Например, поместите это в свой .vimrc:
" First define a function function! MoveFunction(newname) " get the current file name let a:oldname = expand("%:p") " save under the new name exec "saveas " . a:newname " delete the old file call delete(a:oldname) endfunction " Next define a command command! -nargs=1 MoveTo call MoveFunction(<f-args>)
затем:
:MoveTo <new-name>
должен сделать то, что Вы хотите.
Нет, нет никакой команды, которая переименует и дисковый файл и буфер одновременно. Существуют некоторые способы уменьшить объем ввода, необходимо сделать, все же. Например, Vim развернет % до названия текущего буфера/файла, таким образом, Вы могли использовать
:!mv % new_file
Если new_file имеет то же корневое имя как old_file, Вы могли бы сделать это для изменения просто расширения:
:!mv % %:r.xhtml
где %:r
расширяется до названия текущего буфера/файла без расширения. Посмотрите
:help filename-modifiers
После того как у Вас есть имя файла, измененное дисковый, можно изменить буфер на то имя с
:e new_file
или
:f new_file
Обе команды имеют завершение имени файла, таким образом, можно ввести просто первые несколько букв имени файла, затем <вкладка>, чтобы иметь Vim завершают имя.
Существует также плагин Rename.vim: http://www.vim.org/scripts/script.php?script_id=1928