優れた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}
)。