GNU/Linux >> Linux の 問題 >  >> Linux

Vi および Vim Autocommand:カスタム ヘッダーをファイルに自動的に追加する 3 つの手順

これは Lakshmanan G によって書かれたゲスト投稿です。

この記事は、進行中の Vi / Vim Tips &Tricks シリーズの一部です。 Vi / Vim の autocommand 機能を使用すると、ファイルの読み書き中、バッファ/ウィンドウへの出入り中、または Vim の終了中に、いくつかの Vim コマンドを自動的に実行するように指定できます。

この記事では、3 つの簡単な手順を使用して、Vim のこの強力な autocmd 機能を使用してファイル内にヘッダー セクション (たとえば、C プログラミング コードのヘッダー) を作成し、ファイル名、作成日を指定する方法を確認します。 vi でファイルを開くと、最終更新日時が自動的に入力されます。

Vim autocmd 構文:

autocmd  {event} {pattern} {cmd}


イベント: 40 を超える autocmd イベントがあります。以下は autocmd イベントのサンプルです。

BufNewFile	- Starting to edit a file that doesn't exist.
FileReadPre	- Before reading a file with a ":read" command.
BufWritePre	- Starting to write the whole buffer to a file.
FileWritePre	- Starting to write part of a buffer to a file.
BufDelete	- Before deleting a buffer from the buffer list.
BufWipeout	- Before completely deleting a buffer.
BufNew	- Just after creating a new buffer.
BufEnter	- After entering a buffer.
BufLeave	- Before leaving to another buffer.
SwapExists	- Detected an existing swap file.


ほとんどの開発者は、自分のプログラムに何らかのデフォルト ヘッダーを求めています。例を見てみましょう。 「.c」ファイルを開くときは、作成者、ファイル名などを含むファイル ヘッダーが必要です。新しい「.c」ファイルを開くときに、次のテンプレートを自動的に読み込む必要があると考えてください。これは、以下で説明する 3 つのステップで実現できます。

/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

* File Name : 1.c

* Purpose :

* Creation Date : 22-12-2008

* Last Modified : Mon 22 Dec 2008 10:36:49 PM PST

* Created By :  

_._._._._._._._._._._._._._._._._._._._._.*/

ステップ 1:テンプレート ファイルを作成する

以下に示すように、上記のテンプレートを、最初の行に「:insert」、その後にテンプレートと最後の行に「.」(ドット) を付けてテキスト ファイルに保存します。

$ cat c_header.txt
:insert
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

* File Name :

* Purpose :

* Creation Date :

* Last Modified :

* Created By :  

_._._._._._._._._._._._._._._._._._._._._.*/
.

ステップ 2:autocmd コマンドを ~/.vimrc に追加する

~/.vimrc ファイルに次の行を追加します。

$ cat ~/.vimrc
autocmd bufnewfile *.c so /home/jsmith/c_header.txt
autocmd bufnewfile *.c exe "1," . 10 . "g/File Name :.*/s//File Name : " .expand("%")
autocmd bufnewfile *.c exe "1," . 10 . "g/Creation Date :.*/s//Creation Date : " .strftime("%d-%m-%Y")
autocmd Bufwritepre,filewritepre *.c execute "normal ma"
autocmd Bufwritepre,filewritepre *.c exe "1," . 10 . "g/Last Modified :.*/s/Last Modified :.*/Last Modified : " .strftime("%c")
autocmd bufwritepost,filewritepost *.c execute "normal `a"

ステップ 3:自動ヘッダー付きの新しい *.c ファイルを作成する

これで、vim を使用して新しい *.c ファイルを作成すると、Step1 で定義したヘッダーが自動的に追加され、以下に示すようにファイル名と作成日が自動的に入力されます。

$ vi myfile.c
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

* File Name : myfile.c

* Purpose :

* Creation Date : 20-12-2008

* Last Modified :

* Created By :

_._._._._._._._._._._._._._._._._._._._._.*/


myfile.c ファイルを保存すると、以下に示すように、Last Modified フィールドが自動的に更新されます。

$ vi myfile.c
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

* File Name : myfile.c

* Purpose :

* Creation Date : 20-12-2008

* Last Modified : Sat 20 Dec 2008 09:37:30 AM PST

* Created By :

_._._._._._._._._._._._._._._._._._._._._.*/

~/.vimrc 内の autocmd コマンドの説明

$ cat -n ~/.vimrc
     1  autocmd bufnewfile *.c so /home/jsmith/c_header.txt
     2  autocmd bufnewfile *.c exe "1," . 10 . "g/File Name :.*/s//File Name : " .expand("%")
     3  autocmd bufnewfile *.c exe "1," . 10 . "g/Creation Date :.*/s//Creation Date : " .strftime("%d-%m-%Y")
     4  autocmd Bufwritepre,filewritepre *.c execute "normal ma"

     5  autocmd Bufwritepre,filewritepre *.c exe "1," . 10 . "g/Last Modified :.*/s/Last Modified :.*/Last Modified : " .strftime("%c")
     6  autocmd bufwritepost,filewritepost *.c execute "normal `a"

  • 1 行目は、テンプレート ファイルを定義します。これは、*.c ファイルの場合、/home/jsmith/c_header.txt テンプレート ファイルを使用する必要があることを示しています。
  • 2 行目は、1 行目から 10 行目までのパターン「ファイル名:」を検索します。見つかった場合、その行に現在のファイル名を書き込みます。
  • 3 行目で作成日フィールドを更新します。
  • 5 行目は、ファイルを保存するときに、Last Modified フィールドを現在の日時で更新します。
  • 4 行目と 6 行目:ファイルを保存している間、カーソルは「最終変更日:」に移動します (最後の書き込み操作のため)。カーソルを前の位置に戻したい場合は、4 行目と 6 行目を .vimrc ファイルに追加する必要があります。
  • 4 行目は、更新前の現在のカーソル位置をマークします。
  • 6 行目は、カーソル位置を以前の位置に戻します。

最後の注意:

  • Vi / Vim で autocmd が有効になっているかどうかを確認する – vi / vim から :version を実行します。自動コマンド機能が有効になっている場合、+autocmd が表示されます。
  • オートコマンド ヘルプ – vi / vim から :help au を実行して、vim の autocmd 機能に関するクイック ヘルプを取得します。

推奨読書

Vi および Vim エディタの学習 、アーノルド・ロビンズ著 .私はコマンドライン中毒です。だから当然、私は Vi と Vim エディターの大ファンです。数年前、私が Linux で多くの C コードを書いていたとき、私は常に Vi エディターのポケット リファレンスを持ち歩いていました。数年間 Vi および Vim エディタを使用しており、この本をまだ読んでいない場合でも、ぜひこの本を読んでください。 Vim エディターの機能に驚かれることでしょう。

 


この記事は、進行中の Vi / Vim Tips and Tricks シリーズの一部です。 TheGeekStuff に登録して、今後の Vi および Vim エディターのヒントやコツをお見逃しなく。


この記事は Lakshmanan G によって書かれました。彼は bk Systems (p) Ltd で働いており、オープン ソースへの貢献に関心があります。 The Geek Stuff は、あなたのヒントやゲスト記事を歓迎します。


Linux
  1. オーディオファイルをMkvビデオに追加しますか?

  2. ドメインを追加し、カスタムネームサーバーを作成し、ドメインをVPSにポイントする方法は?

  3. Linux ELF オブジェクト ファイル形式 (および ELF ヘッダー構造) の基本

  1. Metamorphose 2 –Linuxでファイルとフォルダーの名前をバッチで変更

  2. Vi および Vim エディター:シソーラス オプションを有効にする 3 つの手順

  3. Linux でヘッダーとトレーラー行をファイルに追加する方法

  1. データ回復のために独自のカスタムファイル拡張子をPhotoRecに追加するにはどうすればよいですか?

  2. Bashスクリプトでユーザーアカウントとパスワードを自動的に追加する方法は?

  3. タブ区切りファイルにヘッダーを追加する