新しいvimファイルにスケルトンテキストを追加するにはどうすればよいですか?


9

私はC ++の記述にVimを使用しており、#include<>作成する新しい各ファイルに含める必要のあるステートメント、コメントなどがかなりあります。私は追加しました

autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file) 

vimrcに追加しました。これにより、必要なテキストを含むバッファーが作成されると聞きました。このテキストを新しいファイルに追加するにはどうすればよいですか?バッファからこれを行う簡単な方法はありますか、またはこれを実行する別の簡単な方法はありますか?テンプレートプラグインについても少し聞いたことがあります。私のためにこれを行うことができる非常に単純なものはありますか?


1
thisを追加して新しいC ++ファイルを編集しautocmd、スケルトンファイルを作成してみましたか?
muru、2016

1
拡張子が.cppの新しいファイルを作成し、Vimで編集してみました。編集のために開いたところ、まだ空白のままでした。別の手順を実行する必要がありますか?
electriccello

2
いいえ、すでに含まれているスケルトンファイルの内容は表示されているはずです。手動で実行するとどうなります:r C:\(full file path of skeleton text file)か?エラーが発生しますか?
muru、2016

3
@electriccelloああ、:enew機能しませんが、:e newfile.cppあれば動作するはずですnewfile.cpp(でも、空の場合)がすでに存在していませんでした。
muru 2016

5
その理由:enewは、新しい、無名のバッファを編集し、しているので、文句を言わない仕事があるその後、 .cppファイルとして保存します。BufNewFileターゲットファイル名で新しいファイルを編集している場合にのみトリガーされます。
fruglemonkey 2016

回答:


6

行を挿入することにより、既存のファイルのスケルトンテキストを新しいファイルに追加できます。

autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file)

vimrcに。BufNewFile新しいファイルが使用して二段階で作成された場合、イベントは動作しません:enewそれから:sav filename。代わりに、vimrcでイベントの自動コマンドを:e filenameトリガーして新しいファイルを作成するBufNewFileと、スケルトンテキストファイルの内容が新しく作成されたファイルに追加されます。


1
もご覧ください :help template
Martin Tournoij

.vimrc輻輳を防ぐために、~/.vim/階層内に配置できる他の場所はありますか?
Santosh Kumar

これにより、新しいファイルの上部に空白行が追加されます。
Santosh Kumar

5

確かに、テンプレートエキスパンダープラグインはこのタスクに役立ちます。:readテンプレートエキスパンダープラグインのステップ0です。

たとえば、mu-templateは、foo.hが検出された場合、foo.cppからfoo.hを含めようとします。また、動的データ(日付、作成者、ライセンス/著作権など)を含むヘッダーを展開することもできます。


1

すべてのファイルタイプのデフォルトのスケルトンをセットアップし、特定のプロジェクト用にカスタマイズするには:

function! s:load_skeleton(type)
  " do nothing if no filetype
  if empty(a:type) | return | endif

  " glob every directory of rtp to search for skeleton/filetype
  let skeletons = globpath(&rtp, 'skeleton/' . a:type, 0, 1)
  if empty(skeletons) | return | endif

  " read last skeleton into 1st line.
  exe '0read ' . skeletons[-1]
endfunction

augroup aug_skeleton
  au!

  " BufNewFile event is trigged when you edit a new file.
  autocmd BufNewFile * call s:load_skeleton(&filetype)
augroup end

の下~/.vim/skeletonにデフォルトのスケルトンを配置します(例:~/.vim/skeleton/vim、)~/.vim/skeleton/sh

プロジェクト固有のスケルトンをの下に置きbalabala/project/.vim/skeletonます。限り~/.vimの前に表示されます balabala/project/.vim:h rtpbalabala/project/skeleton/スケルトンディレクトリとして使用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.