Відповіді:
Перше, що мені спадає на думку - це використовувати 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
або подібну команду.
Я прийняв чудову відповідь ib вище і розширив її наступним чином. Моєю метою було використовувати vim для створення нових файлів розмітки у міру необхідності для вікі (у цьому випадку вікі Gollum)
Я вперше спробував:
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>`
вище працює, як зазначено у відповіді. Однак спочатку я подумав, що це не працює, тому що я фактично не бачив відкриття файлу у vim. Використання другого біта коду нижче відкриє новий файл - це більше те, що я шукав. Тому я поєднав їх і спробував:
map <leader>cf :e <cfile><cr>
але це не працює для вікі, тому що при спробі створити новий файл у вікі за допомогою синтаксису, як [[the-new-file]]
синтаксис wiki, не дозволяє розширити файл у дужках. Однак 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>