VSコードでタグラッピングを行う方法


169

選択したhtmlをVSコードのタグで囲みます。それ、どうやったら出来るの?


1
VSCodeに完全に移行できず、Sublimeを捨てられない理由の1つ。
-budji

3
@budjiこれはemmetの組み込み機能です...あなたが欲しかったもののほとんどは現在も拡張であり、そうでなければいつでもあなた自身のものを作ることができます。
James Coyle 2018年

私はこの質問が好きで、内線番号の呼び出し(略語付きのエメットラップ)を知っていますが、誰でも逆のアクションを実行する方法を知っています。例:最初に<p> ... </ p>を記述し、<u> ** </ u>内に含めると、この結果<p> ... <u> ** </ u> ... </ p>
Jmainol

回答:


341

埋め込みエメットはトリックを行うことができます:

  1. テキストを選択(オプション)
  2. コマンドパレットを開く(通常はCtrl+ Shift+ P
  3. 実行する Emmet: Wrap with Abbreviation
  4. タグdiv(または略語.wrapper>p)を入力してください
  5. ヒット Enter

コマンドをキーバインドに割り当てることができます。

ここに画像の説明を入力してください


これは引数の受け渡しもサポートします:

{
    "key": "ctrl+shift+9",
    "command": "editor.emmet.action.wrapWithAbbreviation",
    "when": "editorHasSelection",
    "args": {
        "abbreviation": "span"
    }
},

次のように使用します。

  • span.myCssClass
  • span#myCssId
  • b
  • b.myCssClass


4
これが答えになるはずです、emmetはすでにvscodeにインストールされています
Nathan

15
Ctrl+ pはgoToFileです。コマンドパレットはCtrl+ Shift+ Pです。
Alex

1
JSXの場合、次の追加手順を追加する必要がありました:github.com/Microsoft/vscode/issues/4962#issuecomment-323880988
Gezim

1
VSCode 1.35.0(およびおそらく以前のバージョン)では、これはJSXで動作します-追加の構成は必要ありません
davnicwil

98

VSCodeマーケットプレイスのクイック検索:https ://marketplace.visualstudio.com/items/bradgashler.htmltagwrap 。

  1. VS Codeクイックオープンを起動(Ctrl+ P

  2. 貼り付けext install htmltagwrapて入力

  3. HTMLを選択

  4. Alt+ W(Macの場合はOption+)Wを押します。


おそらく、手順3で[インストール]を選択します意味
サミル

1
「使用するには、コードのチャンクを選択し、「Alt + W」(Macの場合は「Option + W」)を押します。 " とてもシンプル!それが機能していないことを除いて。VS Code 1.16.1でバージョン0.0.3を試しました。それはほとんど動作します。選択を<p></p>タグでラップしようとしますが、一般的<div></div>ではないように見えるジェネリックではありません。さらに悪いことに、それは失敗します。次のような出力を生成します<p><p>My selected text.</p>
Samir

1
私はそのような他の拡張機能を試しました。しかし、これまでのところ、うまくいくものを見つけるのに運がありません。これは実用的なソリューションに最も近いものでした。David Taylorで0.0.1をラップしてみましたが、Ctrl + iがまったく機能しませんでした。
Samir '19

1
更新:拡張機能が正しく動作するようになり、上記の問題に対処しています。タグの重複がなくなり、設定を介して挿入するタグをカスタマイズできるようになりました。したがって、タグをaにし<div>たい場合は、次の設定を追加します"htmltagwrap.tag": "div"
bgashler1 2017年

それはかなり貧弱な実装です-単一のタグで機能します。構成可能なタグ選択からタグによる選択をラップできるnotepad ++ htmlプラグインに似たものがあるとよいでしょう
Sasha Bond

37

コメントできないので、アレックスの素晴らしい答えを詳しく説明します。

ラップで崇高な体験をしたい場合は、キーマップ拡張機能を開き([設定]> [キーマップ拡張機能[ Cmd+ K Cmd+ M])、次のオブジェクトを追加します。

{
    "key": "alt+w",
    "command": "editor.emmet.action.wrapIndividualLinesWithAbbreviation",
    "when": "editorHasSelection && editorTextFocus"
}

テキストが選択されたときにEmmet wrapコマンドをAlt+ Wにバインドします

(OSXのみの手順で申し訳ありません)


7
これは私がショートカットを追加した方法です:[設定]> [Keyamp Shortcuts] ...次にemmet wrap; ...をクリックしてショートカットを追加します; ... :)
Luckylooke

1
さらに、&& resourceLangId == 'html'を追加して、Webページでのみ機能するようにしました
surpavan

@surpavan、いいですが、htmlテンプレートファイルなどの他のファイルタイプに含めると便利です
Andrew Lewis

1
@AndrewLewis-はい、そのため、ファイル拡張子(files.associations)ではなく、言語IDにしました。
surpavan

Shift + Alt + WはWindowsでは無料です。
ティモフェウス

23
  1. ⌘ Command+ k ⌘ Command+ sまたは+ を入力してキーボードショートカットを開くCode > Preferences > Keyboard Shortcuts
  2. タイプ emmet wrap
  3. 「Emmet:Wrap with Abbreviation」の左側にあるプラス記号をクリックします
  4. タイプ⌥ Option+w
  5. 押す Enter

3

スニペットを使用してこれのより良い答えがあります

次のような定義でスニペットを作成します。

"name_of_your_snippet": {
    "scope": "javascript,html",
    "prefix": "name_of_your_snippet",
    "body": "<${0:b}>$TM_SELECTED_TEXT</${0:b}>"
}

次に、これをkeybindings.jsonのキーにバインドします。たとえば、次のようにします。

{ 
    "key": "alt+w",
    "command": "editor.action.insertSnippet",
    "args": { "name": "name_of_your_snippet" }
}

これはhtmltagwrapとまったく同じ結果になるはずですが、拡張機能をインストールする必要はありません。

選択したテキストの周囲にタグを挿入します。デフォルトでは<b>タグが付けられ、タグが選択されるため、入力すると変更できます。

あなたが別のデフォルトのタグを使用したい場合は、単に変更bbodyスニペットのプロパティ。


これは問題ありませんが、ネストされたHTML、属性、リストの生成など、Emmetはこれ以上の多くのことを実行できます。EmmetはVSコードが付属しています。
Andrew Lewis、

私は反対票を理解していません。もちろん、Emmetはより複雑で、私は多くのことができますが、テキスト選択をタグでラップするために、このソリューションは素晴らしいです!ラップするとき、目を画面/ウィンドウの上部に移動する必要はありません。それはあなたがテキストを選択したのであなたがすでにいた場所ですぐに起こります!これはかなり一般的な使用例であり、実行時間が短い迅速な解決策です!
Andrei V

私はこれにとても興奮していましたが、それを機能させることはできませんでした:/
イカロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.