Ответы:
Первое, что приходит мне в голову, это использовать 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>