回答:
最初に頭に浮かぶのはtouch
、カーソルの下にファイル名を渡すコマンドを使用することです。
:map <silent> <leader>cf :!touch <c-r><c-p><cr><cr>
しかし、プラットフォーム間で移植可能な純粋なVimソリューションがあります。組み込み関数writefile
は、リストをファイルに1行ずつ書き込みます。当然、入力リストが空の場合、空のファイルが作成されます。(詳細: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 wiki)の必要に応じてvimを使用して新しいマークダウンファイルを作成することでした
私が最初に試しました:
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>`
上記は答えで述べたように機能します。しかし、最初はvimでファイルが開いているのを実際に確認できなかったため、機能していないと思いました。以下のコードの2番目のビットを使用すると、新しいファイルが開きます-これは私が探していたものです。だから私はそれらを組み合わせて試しました:
map <leader>cf :e <cfile><cr>
しかし、wiki構文のような構文を使用してwikiに新しいファイルを作成しようとする[[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
。少なくとも1つのアイテムしか含まれていない場合、の改良バージョンはcf
を尊重するバージョンになりますsuffixesadd
。
<cfile>
代わりに教えるための+1<C-r><C-f>