4

拡張子が.javaの新しいファイルを作成するときに、ベアスケルトンクラスを作成するJavaファイル用の基本的なVimテンプレートを作成しています。

例:

vim Banana.java

Vimは次のようなコードを含むファイルを作成します:

public class TODO {
    public static void main(String[] args) {
    // ...

私の目的は、デフォルトのクラス名、TODOを拡張子のないファイルの名前に変更して、次のようにすることです。

vim Coconut.java

作成:

public class Coconut {

それよりも:

public class TODO {

どうすればそれを達成できますか?サイトを検索しましたが、変数内の名前を抽出して適切な場所で:substituteを実行するスクリプトがありますが、適切な場所を見つけてファイル名をそこに配置する方法がわかりません。

.vimrcから拡張子を付けてテンプレートファイルを読み取りました。

autocmd BufNewFile * silent! 0r $HOME/vimfiles/templates/%:e.vim_template

また:

autocmd BufNewFile * silent! 0r $HOME/.vim/templates/%:e.vim_template

ありがとう!

4

2 に答える 2

4

これが役立つと思いますか?http://vim.wikia.com/wiki/Insert_current_filename

これにより、現在のファイル名を取得できます。

expand("%:t:r")

具体的には、おそらくこれを探しています。

%s/TODO/\=expand("%:t:r")/g

完全な例:

function! NewFile()
    silent! 0r $HOME/vimfiles/templates/%:e.vim_template
    s/FILENAME/\=expand("%:t:r")
endfunction

autocmd BufNewFile * call NewFile()

tSkeletonのようなものを試してみることもできます。私自身は試したことはありませんが、この問題は解決するようです。

于 2012-09-02T00:18:42.843 に答える
1

snipmate(vim.orggithub)を見てみましょう。これはボイラープレートコードの一般的な拡張機能であり、Java用の組み込みレシピが多数付属しており(ここで参照して感触をつかむことができます)、この種のものに最適です。

これを使用すると、キーワードを入力してタブを押し、キーワードを定型コードに展開できます。だから、あなたはstdclass->あなたが求めているものをタイプして手に入れることができます。

スニペットにはvim式を埋め込むことができます(のようにFilename()); 展開されたコードの重要なポイントをタブで移動できます。これは、小さなスニペット(getter&setter、try / catch / finally、toStringなど)にも役立ちます。

使いやすく、カスタマイズも簡単で、Javaのような定型文を多用する言語では、それは天の恵みです。

于 2012-09-02T17:05:42.760 に答える