2015-11-02 20 views
5

このガイドに従って、ファイル拡張子に基づいてさまざまなタイプの新しいファイルに別々のヘッダーテンプレートを自動的に挿入します。Vim - autocmdとテンプレートファイルを使用して新しいファイルの行の先頭にバックスラッシュを挿入する方法

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

素晴らしいです!新しい.pyファイルを開くと自動的に挿入されるpythonソースファイル用のカスタムヘッダーがあります。

私はそれが仕事を得ることができない場合を除き

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

...

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

けどOを:

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

と私のtex_template.txtはこの言う:私の〜/ .vimrcとは、この言いますペンは、このような新しいファイル:

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コマンドシーケンスではないので、バックスラッシュが必要です。

+0

2つのバックスラッシュを挿入するとどうなりますか? – 8bittree

+1

はい、申し訳ありません、私は言っていたはずです。私はすでにそれを試みた。 E488:末尾の文字::insert \ documentclass [a4paper、12pt] {記事} –

答えて

4

あなたは:help :insertを見れば、それは、この意見:

が 行継続を参照して、バックスラッシュで始まる行には注意してください。 line-continuationへのリンクに続き

\cpoptionsCフラグを渡すことで上書きすることができます継続文字であることを説明しています。次のようにあなたのテンプレートを変更する場合、それが動作するはず

:set cpo+=C 
:insert 
\documentclass[a4paper,12pt]{article} 
. 
:set cpo-=C 
+0

Brilliant!は、エラーメッセージにバックスラッシュの1つが表示される以外は、基本的に同じです。治療をしなさい。ありがとう:)私はそれがそれのようなものだと思った。私はヘルプファイルをチェックしましたが、そのビットを見つけることができませんでした。ニースのマシュー・ストローブリッジ! –

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:<[email protected]>}. All rights reserved. 
% Created: `!p snip.rv = fcdate(path)` 
% Last modified: `!v strftime("%F %T %z")` 

$0 
endsnippet 

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

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

関連する問題