Имейте я отсутствовал: mv управляют в Vim?

Время от времени я хочу переименовать файл при редактировании его. Например, от .html кому: .xhtml или около этого.

Чтобы сделать это в Vim, я должен сделать

:saveas new_file
:!rm old_file

Есть ли встроенная команда, которая позволяет мне избавляться от :!rm часть? Это является раздражающим для перепечатывания старого пути и имени файла.

2
задан 15.10.2014, 16:11

4 ответа

Вы могли всегда определять свое собственное. Например, поместите это в свой .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>

должен сделать то, что Вы хотите.

3
ответ дан 08.12.2019, 04:39

Нет, нет никакой команды, которая переименует и дисковый файл и буфер одновременно. Существуют некоторые способы уменьшить объем ввода, необходимо сделать, все же. Например, Vim развернет % до названия текущего буфера/файла, таким образом, Вы могли использовать

:!mv % new_file

Если new_file имеет то же корневое имя как old_file, Вы могли бы сделать это для изменения просто расширения:

:!mv % %:r.xhtml

где %:r расширяется до названия текущего буфера/файла без расширения. Посмотрите

:help filename-modifiers

После того как у Вас есть имя файла, измененное дисковый, можно изменить буфер на то имя с

:e new_file

или

:f new_file

Обе команды имеют завершение имени файла, таким образом, можно ввести просто первые несколько букв имени файла, затем <вкладка>, чтобы иметь Vim завершают имя.

8
ответ дан 08.12.2019, 04:39

Можно просто использовать

:!mv old_file new_file

Необходимо сохранить текущий буфер сначала, btw!

1
ответ дан 08.12.2019, 04:39

Существует также плагин Rename.vim: http://www.vim.org/scripts/script.php?script_id=1928

1
ответ дан 08.12.2019, 04:39

Теги

Похожие вопросы