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

Я пробую Vim в течение первых нескольких часов с Ruby on Rails, и пока мне это нравится.

В частности, команда gf великолепна, но я кое-что упускаю: если файл под курсором еще не существует, gf возвращает ошибку.

Есть ли команда для фактического создания и открытия файла, если он не существует? Или как проще всего его создать?


vim
person demental    schedule 27.05.2011    source источник


Ответы (1)


Можно определить собственный вариант команды gf , которая открывает новый буфер, если файл под курсором не существует:

:noremap <leader>gf :e <cfile><cr>

где команду :e можно заменить на :tabe (чтобы открыть буфер для нового файла на отдельной вкладке) или другую команду открытия файла.

Также можно просто создать файл с именем под курсором, не открывая его; см. мой ответ на аналогичный вопрос " Создайте файл под курсором в Vim».

person ib.    schedule 28.05.2011
comment
:e <cfile> достаточно для случайного использования, так как <cfile> захватывает то же имя файла, которое было бы выбрано gf - person jpaugh; 14.07.2018
comment
У меня не работает - мои файлы вложены в подпапки. А иногда я хочу создать файл в подпапке из файла, который уже находится в подпапке. Это ограничение? Я набрал именно эту команду (и решение, и комментарий, я пробовал), а также получил свой файл vimrc. Он просто говорит, что не может найти файл foo/bar.txt в пути - person muuh; 24.12.2019
comment
Есть ли что-нибудь, что можно сказать против пропуска <leader>? То есть: :map gf :e <cfile><cr>? - person Bernhard Wagner; 22.04.2020
comment
@BernhardWagner: Просто это будет затенять исходное отображение gf. Префикс сопоставлений с неконфликтующим ведущим ключом (см. :help mapleader) является одним из рекомендуемых способов избежать конфликтов с существующими сопоставлениями. Однако, если вам нужно затенение встроенного сопоставления, то, конечно, ваше сопоставление не должно использовать лидера. - person ib.; 23.04.2020