Как мне переименовать мой текущий файл в Vim?
Например:
- Я редактирую
person.html_erb_spec.rb
- Я бы хотел переименовать в
person.haml_spec.rb
- Я хотел бы продолжить редактирование
person.haml_spec.rb
Как бы я поступил так элегантно?
Есть небольшой плагин, который позволяет вам сделать это.
Program Files (x86)
, Каждый раз, когда с этим каталогом нужно работать, его нужно заключить в кавычки. Что много.Команда вызывается
:saveas
, но, к сожалению, она не удалит ваш старый файл, вам придется делать это вручную. см.:help saveas
для получения дополнительной информации.РЕДАКТИРОВАТЬ:
Большинство установок vim имеют встроенный файловый менеджер, который вы можете использовать для таких операций. Попробуйте
:Explore
в командном режиме (на самом деле я бы сопоставил это с функциональной клавишей, это очень удобно). Например, вы можете переименовать файлыR
или удалить их с помощьюD
. Но нажатие<F1>
в проводнике даст вам лучший обзор.источник
Если вы используете git и уже имеете плагин tpope fugitive.vim, тогда просто:
Это будет:
Если ваш файл еще не был добавлен в репозиторий git, то сначала добавьте его:
источник
:Gmove
требуется относительный путь для нового имени файла. Хороший способ сделать это - напечатать:Gmove <ctrl-r>%
текущий путь / имя файла.Я делаю это с плагином NERDTree:
затем нажмите m
Для переименования вы можете выбрать
(m)ove the current node
и изменить имя файла. Также есть такие опции, как удаление, копирование, перемещение и т. Д.источник
:w newname
- чтобы создать копию.:e#
.:!rm oldname
.В Windows необязательный третий шаг немного меняется:
:!del oldname
.источник
:f newname
2) сохранить его:w
3) (опционально)!rm oldname
. Преимущество в том, что ваша история отмены сохраняется.:saveas
лучше в этом отношении, @rampion - и делает то, что написал @kynan.Если файл уже сохранен:
Пример:
Требования к разрешению:
Сохранить как:
Для Windows не проверено
источник
Я бы порекомендовал
:Rename
от этого евнуха Тпопе .Он также включает в себя множество других удобных команд.
Команда Rename в настоящее время определяется следующим образом (проверьте репо на наличие обновлений!):
источник
Вы также можете сделать это с помощью Netrw
Команда explore открывает netrw в каталоге открытого файла
Наведите курсор на файл, который вы хотите переименовать:
Введите новое имя, нажмите ввод, нажмите y.
источник
Коротко, безопасно, без плагина:
control+ R, #мгновенно развернется до альтернативного файла (ранее отредактированный путь в текущем окне) перед нажатием Enter. Это позволяет нам проверить, что именно мы собираемся удалить. Использование трубы
|
в таком случае является не безопасным, потому что еслиsav
не удается по какой - либо причине,#
будет по- прежнему указывают на другое место (или ничего). Это означает!rm #
илиdelete(expand(#))
может удалить совершенно другой файл! Поэтому делайте это вручную или используйте хороший сценарий (они упоминаются здесь во многих ответах).образования
... или попробуйте создать функцию / команду / скрипт самостоятельно. Начните с простого как:
после перезагрузки vimrc просто введите
:Rename new_filename
. В чем проблема с этой командой?Тест безопасности 1: что значит
:Rename
без аргументов?Да, он удаляет файл, скрытый в «#»!
Решение: вы можете использовать, например. условия или
try
утверждение, подобное этому:Тест безопасности 1:
:Rename
(без аргументов) выдаст ошибку:Тест безопасности 2: Что делать, если имя будет таким же, как и предыдущее?
Тест безопасности 3: Что делать, если файл будет находиться в другом месте, чем на самом деле?
Исправь это сам. Для удобства чтения вы можете написать это следующим образом:
ноты
!rm #
лучше чем!rm old_name
-> вам не нужно помнить старое имя!rm <C-R>#
лучше, чем!rm #
когда это делается вручную -> вы увидите, что вы на самом деле удаляете (из соображений безопасности)!rm
как правило, не очень безопасно ...mv
для мусора расположение лучшеcall delete(expand('#'))
лучше, чем команда оболочки (независимость от ОС), но длиннее для ввода и невозможно использовать control+Rtry | code1 | code2 | tryend
-> когда происходит ошибка во время code1, не запускайте code2:sav
(или:saveas
) эквивалентно:f new_name | w
- см. file_f - и сохраняет историю отменexpand('%:p')
дает полный путь вашего местоположения (%
) или местоположение альтернативного файла (#
)источник
источник
call delete(expand('#'))
В .vimrc Гэри Бернхардта есть функция , которая обрабатывает это.
источник
Регистр
%
содержит имя текущего файла.'%:h'
показывает каталог 'head', содержащий текущий файл, например:%:h
возвращает,/abc/def
когда полный путь к файлуabc/dev/my.txt
источник
Как насчет этого (улучшено предложением Джейка):
источник
:exe "!mv % newfilename" | e newfilename
У Vim есть
rename
функция, но, к сожалению, она не сохраняет историю.Самый простой способ переименовать файл без потери истории, не зависящий от ОС:
expand('#:p')
возвращает полный путь к старому файлу.Используйте,
:bd #
если вы также хотите удалить старый файл из списка буферов.Или создайте плагин
Если вы хотите использовать быструю команду для переименования файла, добавьте новый файл в ~ / .vim / plugin со следующим содержимым:
Команда
Rename
поможет вам быстро переименовать файл.источник
Там есть значительно больший плагин под названием vim-eunuch от Tim Pope, который включает функцию переименования, а также некоторые другие полезности (удаление, поиск, сохранение всего, chmod, sudo edit, ...).
Чтобы переименовать файл в vim-eunuch:
:Move filename.ext
По сравнению с rename.vim:
:rename[!] filename.ext
Сохраняет несколько нажатий клавиш :)
источник
Для переименования существующего файла без использования плагинов вы должны использовать команду
Эта команда позволяет вам исследовать файлы в .directory, удалять или переименовывать их. чем вы должны перейти к необходимому файлу в проводнике, чем введите
R
команду, которая позволит вам переименовать имя файлаисточник
Я не знаю, является ли это «самым простым» методом, но при условии, что вы уже сохранили свой файл (: w), я бы вызвал оболочку (: sh) и сделал бы простой cp foo foo.bak. Чтобы вернуться в редактор. используйте Ctrl-D / Exit. Полезный список команд редактора vi по этой ссылке
источник
Вы также можете использовать: f, а затем: w
источник
Этот маленький сценарий не идеален (дополнительный возврат каретки, который вы должны нажать), но он выполняет свою работу.
источник
Другой способ - просто использовать netrw, который является частью vim.
Тогда есть варианты для удаления, переименования и т. Д.
Вот таблица ключей, чтобы открыть netrw в папку файла, который вы редактируете:
источник
:sav newfile | !rm #
Обратите внимание, что он не удаляет старый файл из списка буферов. Если это важно для вас, вы можете использовать следующее:
:sav newfile | bd# | !rm #
источник