3

優れたUltiSnips Vim プラグインを使用して、開発ワークフローを改善しています。私はこれを数年間使用しており、コーディング中の冗長な入力の多くを自動化するのに本当に役立っています。

とにかく: Javascript の require ステートメントを生成するのに役立つスニペットを定義しようとしています。

通常の Javascript の require ステートメントは次のようになります。

let express = require('express');

だから、ここに私が定義したスニペットがあります:

snippet req "require a module" b
let ${1} = require('${2}');
endsnippet

これによりreq、Vim で入力できるようになり、カーソルが${1}スニペット内の位置に移動して、変数名を定義できるようになります。もう一度ヒットすると、カーソルが${2}スニペット内の の場所に移動します。これにより、インポートする実際の Javascript モジュール名を定義できます。

これは問題なく動作しますが、私がやりたいことは、さらに一歩進んだことです。次のようなスニペットを作成したいと思います。

の値を入力すると、デフォルトで の値に${1}${2}が更新さ${1}れます。このようにして、特定の状況で同じモジュール名を 2 回入力する手間を省くことができます。

アイデアは、次のようなことができるはずだということです:

snippet req "require a module" b
let ${1} = require('${2:${1}}');
endsnippet

このように、次のように入力すると:

req<tab>express

次の展開された行になるはずです。

let express = require('express');

ただし、次の状況でも機能するはずです。

req<tab>exp<tab>express

どちらが出力されますか:

let exp = require('express');

それは理にかなっていますか?

とにかく:どんな助けでも大歓迎です!上記のコード サンプルは、思ったように動作しません。${2:${1}}ビットは無視され、期待どおりに動作しません ( toプレースホルダー値を設定しません${2}${1})。

4

2 に答える 2

4

req<tab>express次のスニペットは、 と の両方を満たしますreq<tab>exp<tab>express: (アイデアを少し変更)

snippet req "require a module" b
let ${1} = require('${0:$1}');
endsnippet

$1プレースホルダーのミラーです${1}。また、このプレースホルダーでスニペットが終了するように置き換えられ2ます。ビジュアルサポートを追加する0には、プレースホルダーに追加するだけです。@ lwassinkが指示を提供したので、スニペットを示します。${VISUAL}

snippet req "require a module" b
let ${1:${VISUAL}} = require('${0:$1}');
endsnippet
于 2016-07-31T20:52:33.390 に答える
2

これは、Python 補間で行うことができます。

snippet req "require a module"
let ${1:${VISUAL: my_name}} = require ('`!p snip.rv = t[1]`');
endsnippet

JavaScript スニペット ファイルに追加すると、説明どおりに動作するはずです。入力req<tab>expressすると取得できます

let express = require ('express');

おまけとして、スニペットはビジュアル モードでも機能します。このように使用するには、 と入力expressし、ビジュアル モードで [エクスプレス] を選択します。これを行うには、選択する単語の上にカーソルを置き、 と入力しますviw。次に、モジュール名を選択して入力<tab>req<tab>し、スニペットを実行します。これは、require する名前を入力した後で require ステートメントを使用することを覚えている場合に便利です。

私はドリュー ニールの Vimcasts からこれらのほとんどを学びました。彼は Ultisnips に 3 つのシリーズを持っています。これはhttp://vimcasts.org/episodes/meet-ultisnips/から始まります。

于 2016-07-31T20:02:06.873 に答える