4

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

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

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

4 ответа4

7

Да, так нельзя сделать.

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

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

Смотрите :help netrw :help netrw-browse-maps и более конкретно :help netrw-R .

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

1

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

0

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

func! YourFunc() range

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

    [...]

endfunc

Смотрите использование "system()" в https://github.com/eduardolucioac/groovim/blob/master/.vimrc

[] 'S

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .