Вопрос: Можно ли переименовать файлы в каталог с Vim?


Если я открою каталог в vim с помощью vim . Я получу интерфейс типа файла-браузера текущего каталога. Оттуда я должен перейти к файлу, а затем начать его редактирование.

Я хочу использовать этот интерфейс для переименования файлов. С vim переименование работает как %s/term1/term2/ это возвращает: E21: Cannot make changes, 'modifiable' is off,

Есть ли способ превратить modifiable в этом сценарии, или это просто означает, что это невозможно сделать с помощью vim?


2
2018-06-10 16:55


Источник




Ответы:


Да, это невозможно.

Этот «интерфейс типа файла-браузера» обеспечивается встроенным плагином netrw. Это доступно только для чтения, так что да, вы не можете его изменить.

Вы должны попасть R переименовать файл под курсором или отмеченные файлы.

Видеть :help netrw, :help netrw-browse-maps и, более конкретно :help netrw-R,

Если вы хотите переименовывать файлы с помощью Vim, вы должны попробовать qmv из renameutils пакет или vidir из moreutils пакет (спасибо Дмитрию за головы).


5
2018-06-10 18:35



Да, это имеет смысл. Я посмотрю на qmv! - Questionmark
N. B. qmv имеет некоторые проблемы с символами без ascii, while vidir из moreutils нет. - Dmitry Alexandrov


Проверьте renamer.vim - Используйте силу vim для переименования групп файлов плагин. подобно netrw, он представляет содержимое каталога в буфере с нуля, а затем позволяет отредактировать этот буфер и, наконец, применить изменения к базовым файлам.


1
2018-06-11 06:20





Netrw позволит вам применить шаблон для переименования файлов, начиная с версии v143. Процедура: отметьте файлы (используйте mr, чтобы пометить файлы на основе шаблона), затем нажмите R. После первого запроса переименования ответьте строкойs/-frompat-/-topat-/ где -frompat- а также -topat- являются шаблонами замещения vim. s/  для этого требуется. Пример:

s/\(.*\)\.c/\1.cpp/

0
2018-06-13 22:20





Я пытаюсь использовать «system ()» для выполнения этой задачи с помощью оболочки (если это так, конечно), создавая функцию для выполнения этой задачи на вашем «.vimrc».

func! YourFunc() range

    let l:result = system("your shell command")

    [...]

endfunc

См. Раздел «Система ()» в https://github.com/eduardolucioac/groovim/blob/master/.vimrc

[] 'S


0
2018-06-19 15:38