Làm cách nào để bọc vùng lựa chọn bằng thẻ HTML trong Visual Studio?


110

Đây có vẻ là câu hỏi cơ bản nhất trên thế giới, nhưng chết tiệt nếu tôi có thể tìm ra câu trả lời.

Có lối tắt bàn phím nào, có nguồn gốc từ Visual Studio hoặc thông qua Code Rush hoặc plugin của bên thứ ba khác, để bao bọc lựa chọn hiện tại bằng thẻ HTML không? Tôi mệt mỏi với việc nhập thẻ mở, cắt thẻ đóng không đúng vị trí vào khay nhớ tạm, di chuyển con trỏ và dán vào cuối nơi nó thuộc về.

Cập nhật: Đây là cách TextMate xử lý xung quanh vùng chọn bằng thẻ . Thành thật mà nói, tôi ngạc nhiên rằng Visual Studio dường như không có tính năng tương tự. Tạo macro hoặc đoạn mã cho mọi thẻ có thể liên tưởng mà tôi có thể muốn sử dụng có vẻ vô lý.


Bạn có thể viết macro theo cách mà nó sẽ nhắc bạn nhập thẻ để bọc vùng lựa chọn. Tôi có thể tìm hiểu macro của mình nếu bạn muốn?
Ian Jacobs

Bất cứ ai đã tìm thấy một cách để làm điều này chưa?
SamWM

Câu trả lời:


132

Visual Studio 2015 đi kèm với một phím tắt mới, Shift + Alt + W, bao bọc vùng lựa chọn hiện tại bằng một div. Phím tắt này sẽ chọn văn bản "div", giúp nó có thể thay đổi liền mạch thành bất kỳ thẻ mong muốn nào. Điều này cùng với việc thay thế thẻ đóng tự động tạo ra một giải pháp nhanh chóng.

CẬP NHẬT

Lối tắt này cũng có sẵn trong Visual Studio 2017, nhưng bạn phải cài đặt khối lượng công việc "ASP.NET và Phát triển Web".

Thí dụ

Shift+Alt+W > p > Enter

Vẫn áp dụng trong VS2017.
Zze,

không hoạt động với tôi trong VS 2017. Tôi nghĩ điều này chỉ hoạt động nếu bạn có các yếu tố cần thiết về web.
RayLoveless

1
@RayLoveless ctrl-k ctrl-s hoạt động để tôi bao quanh một đoạn mã. Tuy nhiên, lựa chọn của bạn phải đến từ danh sách đoạn mã (không có div) và các đoạn mã cung cấp các trường bổ sung cần chỉnh sửa phá vỡ quy trình làm việc được nêu chi tiết ở trên. Người ta có thể tranh luận về các đoạn mã tùy chỉnh nhưng tôi thích các giải pháp ngoài hộp hơn!
D-Jones

1
@WildJoe bạn đang mở loại tệp nào? nếu tình cờ đó là tệp xml hoặc xaml, tôi không chắc điều này sẽ hoạt động, vì tôi tin rằng điều này chỉ hoạt động đối với trình chỉnh sửa HTML.
D-Jones

1
@WildJoe xem tại đây stackoverflow.com/a/34799783/1647159 và tại đây stackoverflow.com/a/22274313/1647159 Cảnh báo, bạn có thể gặp phải trải nghiệm xuống cấp
D-Jones

65

Tôi biết điều này đã cũ và bây giờ bạn có thể đã tìm thấy câu trả lời nhưng tôi chỉ muốn nói thêm vì lợi ích của những người có thể không biết rằng điều này có thể xảy ra trong VS 2010:

  1. Chọn mã bạn muốn bao quanh.
  2. Thực hiện ctrl-k ctrl-s(hoặc nhấp chuột phải và chọn Surround with....
  3. Có nhiều đoạn mã HTML khác nhau để bạn lựa chọn.

Bạn có thể tạo Xung quanh của riêng mình với các đoạn mã nếu bạn không tìm thấy những gì bạn đang tìm kiếm:

  1. Bấm Filevà sau đó bấm New, và chọn một loại tệp XML.
  2. Trên Filemenu, nhấp vào Save.
  3. Trong Save ashộp, hãy chọn All Files (*.*).
  4. Trong File namehộp, nhập tên .snippettệp có phần mở rộng tên tệp.
  5. Bấm vào Save.

Nhập một cái gì đó giống như mẫu sau vào tệp XML:

<CodeSnippet Format="1.1.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <Header>
    <Title>ul-div</Title>
    <Author>Microsoft Corporation</Author>
    <Shortcut>ul>li</Shortcut>
    <Description>Wrap in a ul and then an li</Description>
    <SnippetTypes>
      <SnippetType>Expansion</SnippetType>
      <SnippetType>SurroundsWith</SnippetType>
    </SnippetTypes>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>selected</ID>
        <ToolTip>content</ToolTip>
        <Default>content</Default>
      </Literal>
    </Declarations>
    <Code Language="html"><![CDATA[<ul><li>$selected$</li></ul>$end$]]></Code>
  </Snippet>
</CodeSnippet>
  1. Mở Tools> Code Snippets Manager.
  2. Nhấp Importvà duyệt đến đoạn mã bạn vừa tạo.
  3. Kiểm tra My HTML Snippetsvà nhấp Finishvà sau đó OK.

Sau đó, bạn sẽ có sẵn đoạn mã HTML mới sáng bóng để gói nội dung!


2
Khi bạn nói "Nhấp vào Tệp XML và sau đó nhấp vào Mở." Ý anh là gì? nhấp vào tệp xml nào?
Người dùng

Đó là một mẹo tuyệt vời! Bạn có biết điều ngược lại? Bạn có thể xóa các thẻ xung quanh bằng cách nào?
Trio Cheung

@User ... Tôi đang sửa nó bây giờ. Nó không nên nói "Nhấp vào tệp XML ...", chỉ "Nhấp vào tệp ...".
Watki02

3
điều này hoạt động nhưng nó không chính xác là một lối tắt, nhiều hơn một lối tắt
Pixelomo

@AlanSutherland Lần đầu tiên bạn thiết lập, vâng. Sau khi nó được thiết lập thì chỉ cần ctrl-k ctrl-s và chọn mẫu.
Bradley Mountford


42

Nếu bạn đã cài đặt Web Essentials , bạn có thể sử dụng Shift + Alt + W để bao quanh vùng lựa chọn bằng một thẻ.


6
Điều tuyệt vời cần đề cập về điều này là bạn chỉ cần thẻ được đánh dấu hoặc thậm chí chỉ cần có con trỏ bên trong thẻ. Không cần phải chọn văn bản một cách rõ ràng.
Alex KeySmith

8

Tôi biết đây là một chủ đề cổ xưa nhưng sau khi đề cập đến vấn đề này, cuối cùng tôi đã bắt đầu làm cho riêng mình và vì đây là một trong những kết quả đầu tiên trên Google, tôi nghĩ rằng mọi người có thể thấy điều này hữu ích.

Trên thực tế, nó khá dễ dàng, tôi chỉ cần sao chép từ một đoạn mã HTML hiện có và di chuyển xung quanh các chữ. Đoạn mã sau sẽ bao quanh một thẻ HTML chung, nó nhắc nhở thẻ và sẽ đặt nó vào cả thẻ mở và thẻ đóng.

<CodeSnippet Format="1.1.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <!-- Generic HTML Snippet -->
  <Header>
    <Title>Html</Title>
    <Author>Liam Slater</Author>
    <Shortcut>h</Shortcut>
    <Description>Markup snippet for HTML</Description>
    <SnippetTypes>
      <SnippetType>SurroundsWith</SnippetType>
    </SnippetTypes>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>tag</ID>
        <ToolTip>tag</ToolTip>
        <Default></Default>
      </Literal>
      <Literal>
        <ID>selected</ID>
        <ToolTip>content</ToolTip>
        <Default>content</Default>
      </Literal>
    </Declarations>
    <Code Language="html"><![CDATA[<$tag$>$selected$</$tag$>$end$]]></Code>
  </Snippet>
</CodeSnippet>

7

Khi gặp tình huống này, tôi thường gõ thẻ đóng trước, sau đó mới đến thẻ mở. Điều này ngăn không cho IDE "trợ giúp" bằng cách chèn thẻ đóng vào nơi tôi không muốn. Tuy nhiên, tôi cũng quan tâm đến một giải pháp tốt hơn.


3
+1. Thực sự đáng kinh ngạc là điều này phức tạp đến mức nào đối với một tính năng đơn giản như vậy.
John Hargrove,

Gần 8 năm sau, tôi vẫn sử dụng như vậy
Jack

7

Đối với những người sử dụng Visual Studio 2017: Nhấp chuột phải vào một html/ cshtmlkhu vực hoặc chọn một số phần tử để bao bọc, có một Wrap With <div>nút trên danh sách. nhập mô tả hình ảnh ở đây


1
Đây là một bản sao của câu trả lời hiện được chọn (sử dụng shift+alt+w).
Zze,

Tôi nên làm cái gì sau đó? Nhân tiện, Visual Studio 2015 không có phần tử giao diện người dùng như tôi đã trình bày trong câu trả lời của mình khi tôi viết, tôi chỉ muốn cho thấy rằng có phần tử giao diện người dùng để thực hiện điều tương tự thông qua nhấp chuột trong Visual Studio 2017.
Burak Karakuş

2

Tôi không biết gì, nhưng viết macro để bọc nó trong bất kỳ thẻ nào bạn muốn sẽ không khó. Tôi có một cái tương tự sẽ bao bọc lựa chọn của tôi trong một khối vùng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.