Какой самый простой способ переименовать файл, который вы сейчас редактируете в Vim? - PullRequest
5 голосов
/ 06 января 2012

Какой самый практичный способ переименовать файл, который вы сейчас редактируете в Vim, не испортить текущую конфигурацию split ?

Как правило, нужно ...сохраните файл под другим именем, удалите оригинальное и заново откройте новое, не внося путаницы в текущую компоновку.

Кто-нибудь знает, как это сделать с помощью одной команды (функции) илименьше

Ответы [ 4 ]

12 голосов
/ 06 января 2012

:saveas newname сохранит буфер с новым именем, сделает это имя текущим буфером и установит альтернативный буфер для старого файла.

:call delete(expand('#')) удалит файл, связанный с альтернативным буфером.

Вы можете легко превратить это в команду с чем-то вроде

:command! -bang -complete=file -nargs=+ Rename saveas<bang> <args> | call delete(expand('#'))`

Руководство пользователя содержит подробное описание создания пользовательских команд . Вот объяснение элементов, которые я использую выше.

  • -bang позволяет команде вызываться либо Rename, либо Rename!, а <bang> в составленной команде заменяется либо пустой строкой, либо !, в зависимости от того, как она вызывается. Это используется для поддержки той же функциональности в команде :saveas.
  • -complete=file позволит вам завершить путь, который будет использоваться для нового файла, аналогично :e и :saveas do.
  • -nargs=+ указывает, что :Rename требует как минимум один аргумент (имя файла), но может принимать больше. <args> заменяется теми аргументами, которые даны :Rename. Это позволяет вам указать дополнительные аргументы, которые принимает :saveas, так что вы можете сделать что-то вроде :Rename ++enc=latin1 newfile, чтобы переименовать файл в newfile и изменить кодировку на latin1.
3 голосов
/ 06 января 2012

Tim Pope имеет плагин, который имеет функцию :Rename, которая делает это: vim-eunuch .

Вы также можете выполнить следующую последовательность шагов:

:saveas newfile
:bw <buffer_for_the_old_file>
:!rm old_file

Конечно, это не так хорошо, как переименование файла в оболочке.

2 голосов
/ 06 января 2012

Вызовите проводник с помощью :Explorer или просто :E, выберите файл и нажмите r, чтобы переименовать.

0 голосов
/ 28 ноября 2014

Использование :Move предоставляется eunuch .

eunuch также предоставляет другие полезные файловые операции, такие как :Remove, sudoedit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...