Risposte:
La prima cosa che mi viene in mente è usare il touch
comando passandogli il nome del file sotto il cursore.
:map <silent> <leader>cf :!touch <c-r><c-p><cr><cr>
Ma esiste una soluzione Vim pura portatile su più piattaforme. La funzione integrata writefile
scrive un elenco in un file, riga per riga. Naturalmente, quando l'elenco di input è vuoto, crea un file vuoto. (Vedi :help writefile
per i dettagli.) Possiamo sfruttare questo effetto collaterale:
:map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>
Si noti che l'estrazione del nome file può essere regolata utilizzando un expand
modello diverso (vedere :help expand()
).
A proposito, se si desidera non creare un file, ma solo aprirlo per la modifica, è possibile definire un gf
mapping simile:
:map <leader>gf :e <cfile><cr>
dove il :e
comando può essere sostituito con :tabe
o un comando simile.
Ho preso l'eccellente risposta di ib sopra e l'ho ampliata come segue. Il mio obiettivo era usare vim per creare nuovi file markdown secondo necessità per un wiki (in questo caso un wiki di Gollum)
Ho provato per la prima volta:
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>`
quanto sopra funziona come indicato nella risposta. Tuttavia, all'inizio ho pensato che non funzionasse perché in realtà non ho visto il file aprirsi in vim. Usando il secondo bit di codice qui sotto si aprirà un nuovo file - questo è più quello che stavo cercando. Quindi li ho combinati e ho provato:
map <leader>cf :e <cfile><cr>
ma questo non funziona per un wiki perché quando provi a creare un nuovo file nel wiki usando la sintassi come [[the-new-file]]
la sintassi wiki non consente l'estensione del file tra parentesi. Tuttavia, Vim deve conoscere l'estensione durante la creazione di un nuovo file affinché funzioni. In questo caso ho usato:
map <leader>cf :e <cfile>.md<cr>
così ho potuto creare nuovi file markdown. Esistono modi per personalizzare ulteriormente questo aspetto (ad esempio non codificando in modo rigido l'estensione) ma quanto sopra funziona bene per le mie esigenze. Se avessi mai bisogno di un'altra estensione (ad esempio per salvare un file .wiki) probabilmente prenderò semplicemente il percorso e creerò un'altra mappa come:
map <leader>cwf :e <cfile>.wiki<cr>
Come vantaggio collaterale puoi usare lo stesso comando per aprire il file markdown già esistente (qui il gf
comando standard non funzionerà perché manca l'estensione del file).
gf
funziona se set suffixesadd=.wiki
. Una versione migliorata del tuo cf
sarebbe quella che rispetta suffixesadd
, almeno nel caso in cui contenga solo un oggetto.
<cfile>
invece di<C-r><C-f>