5

このガイドに従って、ファイル拡張子に基づいて、さまざまな種類の新しいファイルにさまざまなヘッダー テンプレートを自動的に挿入しました。

http://www.thegeekstuff.com/2008/12/vi-and-vim-autocommand-3-steps-to-add-custom-header-to-your-file/

それはうまくいきます!新しい .py ファイルを開くと自動的に挿入される Python ソース ファイルのカスタム ヘッダーがあります。

新しい.texファイルを開いたときに基本的なLaTeXテンプレートが挿入されるように、同様のことをしたい...

私がそれを機能させることができないことを除いて...

私の ~/.vimrc はこう言っています:

autocmd bufnewfile *.tex so /home/steve/Work/tex_template.txt

そして私のtex_template.txtはこれを言います:

:insert
\documentclass[a4paper,12pt]{article}
.

しかし、次のような新しいファイルを開くと:

vim test.tex

(test.tex がまだ存在しない場合)

私はこれを得る:

"test.tex" [New File]
Error detected while processing /home/steve/Work/tex_template.txt:
line    2:
E492: Not an editor command: :insertdocumentclass[a4paper,12pt]{article}
Press ENTER or type command to continue

tex_template.txt からバックスラッシュを削除すると、新しいファイルが documentclass[a4paper,12pt]{article} で開かれるため、問題は行頭のバックスラッシュにあるようです。それ以外の場合はtexコマンドシーケンスではないため、バックスラッシュが必要です。

4

2 に答える 2

1

vim-snipmateや (私のお気に入りの) ultisnipsなどのスニペット エンジンの使用を検討することをお勧めします。これらを使用すると、ファイルの先頭だけでなく、あらゆる場所にテキストのスニペットを挿入できます。

おまけとして、これらのスニペットは、たとえば変数を置換したり、コマンドを実行したりすることもできます。以下は、TeX ファイルのヘッダーを生成するように設定された私のスニペット (ultisnips 用) です。

snippet hdr "File header for LaTeX" b
% file: `!v expand('%:t')`
% vim:fileencoding=utf-8:ft=tex
%
% Copyright © `!v strftime("%Y")` ${1:R.F. Smith} ${2:<my@email>}. All rights reserved.
% Created: `!p snip.rv = fcdate(path)`
% Last modified: `!v strftime("%F %T %z")`

$0
endsnippet

これにより、ファイル名とファイルが最後に変更された時刻が自動的に入力されます。私の名前と電子メールにデフォルト値が入力されますが、それらを上書きする機会が与えられます。このfcdate関数は、ファイルの誕生時刻を取得するために私が書いた Python コードです。

いくつかの異なるファイルタイプに対して定義されたhdrスニペットと、他のすべてのファイルに使用される一般的なスニペットがあります。hdrtab行頭に入力すると、適切なスニペットが展開されます。

于 2015-11-02T22:07:42.757 に答える