snipMateを使用したvimでの生産的な作業

この記事では、コードの作成、レイアウト、テキスト編集を大幅に高速化するvimの優れたプラグインについて説明します。

snipMate-キーワード+ <tab>を使用して文書にテキストテンプレートをすばやく挿入でき、挿入されたテンプレートに便利なナビゲーションを提供します。


設置

拡張機能を機能させるには、構成ファイル(vimrc)に次の行を追加します。
set nocompatible filetype on filetype plugin on 

スニペット


snipMateで使用されるテキストパターンは、スニペットと呼ばれます。
〜/ .vimフォルダーに同じ名前の個別のディレクトリがあります
ダウンロードしたアーカイブには、さまざまなプログラミング言語用のテンプレートの基本セットが含まれています。

Cのようなforループのテンプレートを使用してみましょう。このため、拡張子が.cまたは.cppのファイルで、挿入モードで<tab>を入力する必要があり(<tab>はタブキーを押すことを意味します) 、すぐに次の構造を取得します:
  for (i = 0; i < count; i++) { /* code */ } 

テンプレートには4つの編集可能なゾーンがあり、 タブキーを使用して切り替えることができますShift + Tabで逆切り替え)
  for (/*2*/ = 0; /*2*/ < /*1*/; /*2*//*3*/) { /*4*/ } 

フォーカスが次のゾーンに切り替わると、編集モードになっている間、つまり新しいテキストを入力すると古いゾーンが完全に消去される間、このゾーンが強調表示されます。
ゾーンの3つのインスタンス/ * 2 * /が表示されます。 これは、編集時に変更が3つのインスタンスすべてに適用されることを意味します。

単純なループを記述する例:
" for <tab> 100 <tab> myVar <tab> + = 10 <tab> // some "は次のコードフラグメントを作成します。
  for (myVar = 0; myVar < 100; myVar+=10) { //some } 


これが練習ビデオでの見た目です。

便利ですか? それはあなた次第です。

このプラグインで最も重要なことは、その拡張性です。 独自のテンプレートを開発し、それらを最大限に活用できます。

独自のスニペットを書く


すでに知っているように、すべてのスニペット〜/ .vim / snippetsにあります
ダウンロードしたアーカイブにはファイル「syntax / snippet.vim」が含まれていることに注意してください。これは、お気に入りのエディターでスニペットファイルを編集する際の構文の強調表示に満足することを意味します。
独自のスニペットを作成しましたが、単純すぎてvimの略語に似ています。 したがって、テンプレートの本文を詳しく見てみましょう。

拡張テキスト


デフォルトでは、タブをクリックした後、カーソルはテンプレートの最後に配置されます。
これらの構造はすべて、互いに入れ子にして、目的の結果を得ることができます。 受け入れられた引数の二乗を返す単純な関数のテンプレートを書きましょう。
 snippet sq ${1:int} $1_sqr($1 x){ return x*x; } ${2} 

今それを適用します。 「foo.c」を開き、編集モードに入ります: sq <tab> double
その結果、以下が得られます。
 double double_sqr(double x){ return x*x; } 
たった2語で、関数の準備ができました!

オプションテンプレート


オプションを使用してテンプレートを定義すると便利な場合があります。 この設計は次のように実装できます。
 snippet < > <  1> <  1> snippet < > <  2> <  2> ... snippet < > <  N> <  N> 

テンプレートのすべての説明には同じキーワードがありますが、実装が異なります。 このようなテンプレートを使用しようとすると、ダイアログが表示され、すべての適切なテンプレートの説明を確認し、目的の番号を入力して選択を行うことができます。
前の例の関数のテンプレートを再定義してみましょう。
 snippet sq int_sqr int int_sqr(int x){ return x*x; } snippet sq double_sqr double double_sqr(double x){ return x*x; } snippet sq someType_sqr someType someType_sqr(someType x){ return x*x; } 

編集モードでsq <tab>を入力すると、次のダイアログが表示されます。
 1. int_sqr 2. double_sqr 3. someType_sqr Type number and <Enter> or click with mouse (empty cancels): 

関数を取得するには、1つの単語を入力して選択するだけです。

Vimスクリプトを使用する


テンプレートには、スニペットがドキュメントに挿入されるときに解釈されるwimスクリプトの抜粋が含まれる場合があります。 外部コマンドを実行し、出力を挿入ポイントに送るsystem()関数は非常に便利です。 スクリプトは`` (多くの場合''と混同される)で取得する必要があります。
system()を使用した例を見てみましょう。
 snippet today Today is `system("date +%Y-%m-%d")` 

挿入すると、次のようになります: 今日はYYYY-MM-DD

パターンセットの組み合わせ


1つのドキュメントを編集するときに複数のファイルからスニペットをアクティブにするには、次の手順を使用します。
 :set ft=<currentFiletype>.<otherFiletype> 
構文の強調表示が失われないように、現在の編集済みファイルのタイプを最初に示す必要があることに注意してください。 たとえば、 * .cを編集するときにHTMLテンプレートをアクティブにするには次を実行する必要があります。
 :set ft=c.html 


これが誰かに役立つことを願っています。 snipMateの詳細については、ファイル〜/ .vim / doc / snipMate.txtを参照してください

参照資料


Vim公式ページ
vim.orgのSnipMateページ
デモビデオ

Source: https://habr.com/ru/post/J125355/


All Articles