Ответы:
Первое, что приходит мне в голову, это использовать touchкоманду, передающую ему имя файла под курсором.
:map <silent> <leader>cf :!touch <c-r><c-p><cr><cr>
Но есть чистое решение Vim, переносимое между платформами. Встроенная функция writefileзаписывает список в файл, строка за строкой. Естественно, когда список ввода пуст, он создает пустой файл. (Подробнее :help writefileсм.) Мы можем воспользоваться этим побочным эффектом:
:map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>
Обратите внимание, что извлечение имени файла может быть скорректировано с использованием другого expandшаблона (см. :help expand()).
Кстати, если вы хотите не создавать файл, а просто открыть его для редактирования, вы можете определить gfпохожее отображение:
:map <leader>gf :e <cfile><cr>
где :eкоманда может быть заменена :tabeили аналогичной командой.
Я взял превосходный ответ, изложенный выше, и расширил его следующим образом. Моя цель состояла в том, чтобы использовать vim для создания новых файлов разметки, необходимых для вики (в данном случае это Gollum wiki)
Я впервые попробовал:
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>`
вышеупомянутое работает как указано в ответе. Однако сначала я подумал, что это не работает, потому что на самом деле я не видел открытия файла в vim. Использование второго фрагмента кода ниже откроет новый файл - это больше, чем я искал. Поэтому я объединил их и попробовал:
map <leader>cf :e <cfile><cr>
но это не работает для вики, потому что при попытке создать новый файл в вики с использованием синтаксиса, подобного [[the-new-file]]синтаксису вики, не допускается расширение файла в скобках. Однако Vim должен знать расширение при создании нового файла, чтобы это работало. В этом случае я использовал:
map <leader>cf :e <cfile>.md<cr>
чтобы я мог создавать новые файлы уценки. Существуют способы дальнейшей настройки этого (например, без жесткого расширения расширения), но вышеописанное прекрасно работает для моих нужд. Если мне когда-нибудь понадобится другое расширение (например, для сохранения файла .wiki), я, вероятно, просто выберу простой маршрут и создам другую карту, например:
map <leader>cwf :e <cfile>.wiki<cr>
В качестве дополнительного преимущества вы можете использовать ту же команду, чтобы открыть уже существующий файл уценки (стандартная gfкоманда не будет работать здесь, потому что отсутствует расширение файла).
gfработает если set suffixesadd=.wiki. Ваша улучшенная версия cfбудет соответствовать той, которая соблюдается suffixesadd, по крайней мере в том случае, если она содержит только один элемент.
<cfile>вместо<C-r><C-f>