Yanıtlar:
Aklıma gelen ilk şey touch
, imlecin altındaki dosya adını ileten komutu kullanmaktır .
:map <silent> <leader>cf :!touch <c-r><c-p><cr><cr>
Ancak platformlar arasında taşınabilir saf bir Vim çözümü var. writefile
Yerleşik işlev , bir dosyaya satır satır bir liste yazar. Doğal olarak, giriş listesi boş olduğunda, boş bir dosya oluşturur. (Ayrıntılar :help writefile
için bakınız.) Bu yan etkiden faydalanabiliriz:
:map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>
Dosya adı çıkarmanın farklı bir expand
desen kullanılarak ayarlanabileceğini unutmayın (bkz. :help expand()
).
Bu arada, bir dosya oluşturmak istemiyor, ancak sadece düzenleme için açmak istiyorsanız, benzer bir gf
eşleme tanımlanabilir :
:map <leader>gf :e <cfile><cr>
burada :e
komut :tabe
veya benzer bir komutla değiştirilebilir.
Yukarıdaki ib ile mükemmel cevabı aldım ve aşağıdaki gibi genişlettim. Amacım, bir wiki için gerektiğinde yeni markdown dosyaları oluşturmak için vim kullanmaktı (bu durumda bir Gollum wiki)
İlk denedim:
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>`
yukarıdaki cevapta belirtildiği gibi çalışır. Ancak, ilk başta çalışmadığını düşündüm çünkü aslında vim'de dosya açılışını görmedim. Aşağıdaki kodun ikinci bitini kullanmak yeni bir dosya açacaktır - aradığım şey budur. Bu yüzden onları birleştirdim ve denedim:
map <leader>cf :e <cfile><cr>
ancak wiki sözdizimi gibi sözdizimini kullanarak wiki'de yeni bir dosya oluşturmaya çalıştığınızda [[the-new-file]]
dosyanın parantez içindeki uzantısına izin vermediğinden, bu bir wiki için çalışmaz. Ancak, bunun çalışması için yeni bir dosya oluştururken Vim'in uzantıyı bilmesi gerekir. Bu durumda kullandım:
map <leader>cf :e <cfile>.md<cr>
böylece yeni markdown dosyaları oluşturabilirim. Bunu daha da özelleştirmek için yollar vardır (örneğin, uzantıyı zor kodlayarak değil), ancak yukarıdaki benim ihtiyaçları için iyi çalışıyor. Şimdiye kadar başka bir uzantıya ihtiyacım varsa (örneğin bir .wiki dosyasını kaydetmek için) muhtemelen basit yolu seçeceğim ve aşağıdaki gibi başka bir harita yapacağım:
map <leader>cwf :e <cfile>.wiki<cr>
Bir yan fayda olarak, zaten mevcut olan markdown dosyasını açmak için aynı komutu kullanabilirsiniz ( gf
dosya uzantısı eksik olduğu için standart komut burada çalışmaz).
gf
eğer çalışır set suffixesadd=.wiki
. Geliştirilmiş bir sürümü , en azından yalnızca bir öğe içerdiği durumlarda cf
saygı duyan bir sürüm olacaktır suffixesadd
.
<cfile>
yerine<C-r><C-f>