2017-11-09 10 views
0

エディタ自体で値の変換が可能なカスタムVSCodeスクリプトを作成する方法はありますか?エディタ内の値を変換するカスタムスクリプト

例えば、.cssファイルで、Iは以下の内容を有する:

section { 
    position: absolute: 
    top: 114px; 
    left: 72px; 
} 

を私が容易1200pxためにビューポートの幅単位(vw)に、px値(114px72px)を変換したいですビューポート。

現在、(114 * 100)/1200を手動で計算するとvwという値が得られます。

VSCodeはpxの値を対応するvwの値に変換できますか?

答えて

1

これがあなたが探しているものかどうかわかりませんが、これを行う拡張機能を書くことができます。開始の手助けについては、our extension authoring documentationをご覧ください。

import * as vscode from 'vscode'; 

export function activate(context: vscode.ExtensionContext) { 
    const disposable = vscode.commands.registerCommand('do.convert',() => { 
     const activeEditor = vscode.window.activeTextEditor; 
     if (!activeEditor) 
      return; 

     const range = activeEditor.document.getWordRangeAtPosition(activeEditor.selection.start, /a-z0-9%/i); 
     const line = activeEditor.document.getText(range); 
     const pxMatch = line.match(/(\d+)px/); 
     if (!pxMatch) 
      return; 

     const px = + pxMatch[1]; 
     const edit = new vscode.WorkspaceEdit(); 
     edit.replace(activeEditor.document.uri, range, `${(px * 100)/1200}vw`); 
     vscode.workspace.applyEdit(edit); 
    }); 

    context.subscriptions.push(disposable); 
} 
+0

恐ろしい:

基本の考え方は次のようなものになるだろう。このスクリプトはどのように使用されますか?ドキュメントから、特定のファイルタイプが検出されたとき、特定のファイルが存在するとき、またはコマンドがコマンドパレットまたはキーの組み合わせで選択されたときにのみ呼び出すことができるようです。テキスト範囲を選択し、キーコンボを使用してトリガーしますか? –

+0

はい、コマンドを登録する例については、hello world拡張を参照してください:https://code.visualstudio.com/docs/extensions/example-hello-worldこのコマンドはデフォルトですべてのファイルで有効になりますが、あなたが望むならば、それはちょうどcssファイルにします。サンプルコードは、カーソル位置から値を取得しますが、これをカスタマイズして代わりに選択範囲を使用することができます –

関連する問題