Respostas:
A primeira coisa que me vem à mente é usar o touch
comando passando o nome do arquivo sob o cursor.
map <silent> <leader>cf :!touch <c-r><c-p><cr><cr>
Mas há uma solução interna do Vim que deve ser portátil entre plataformas. A função writefile
grava uma lista em um arquivo linha por linha. Quando a lista de entrada está vazia, ela cria um arquivo vazio. (Veja
:help writefile
para detalhes.)
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>
Observe que a extração do nome do arquivo pode ser ajustada usando expand
padrões diferentes
(consulte :help expand()
).
A propósito, se você não quiser criar um arquivo, mas abrir um para edição, poderá definir o gf
mapeamento semelhante
map <leader>gf :e <cfile><cr>
onde :e
poderia ser substituído por :tabe
ou com algo semelhante.
Peguei a excelente resposta de ib acima e a expandi da seguinte forma. Meu objetivo era usar o vim para criar novos arquivos de remarcação, conforme necessário para um wiki (neste caso, um wiki Gollum)
Eu tentei pela primeira vez:
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>`
o acima funciona como indicado na resposta. No entanto, no começo, pensei que não estava funcionando porque na verdade não vi o arquivo sendo aberto no vim. Usar o segundo bit de código abaixo abrirá um novo arquivo - é mais o que eu estava procurando. Então eu os combinei e tentei:
map <leader>cf :e <cfile><cr>
mas isso não funciona para um wiki porque quando você tenta criar um novo arquivo no wiki usando uma sintaxe como [[the-new-file]]
a sintaxe do wiki não permite a extensão do arquivo entre colchetes. No entanto, o Vim precisa saber a extensão ao criar um novo arquivo para que isso funcione. Nesse caso, usei:
map <leader>cf :e <cfile>.md<cr>
para que eu pudesse criar novos arquivos de remarcação. Existem maneiras de personalizar ainda mais isso (por exemplo, não codificando a extensão), mas as opções acima funcionam bem para minhas necessidades. Se eu precisar de outra extensão (por exemplo, para salvar um arquivo .wiki), provavelmente pegarei a rota simples e farei outro mapa como:
map <leader>cwf :e <cfile>.wiki<cr>
Como um benefício colateral, você pode usar o mesmo comando para abrir o arquivo de remarcação já existente (o gf
comando padrão não funcionará aqui porque está faltando a extensão do arquivo).
gf
funciona se set suffixesadd=.wiki
. Uma versão melhorada cf
seria uma que respeite suffixesadd
, pelo menos no caso em que contenha apenas um item.
<cfile>
vez de<C-r><C-f>