2013-08-08 56 views
11

Tôi tự hỏi nếu có cách nào để tạo #region Some Region #endregion Some Region. Nếu không có cách nào để làm điều đó thì có thể là có thể với Resharper?Tự động tạo #region có cùng tên tại #endregion

Hy vọng nó rõ ràng những gì tôi đang cố gắng để đạt được ở đây.

Edit:

<?xml version="1.0" encoding="utf-8" ?> 
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
<CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>#region</Title> 
     <Shortcut>#region</Shortcut> 
     <Description>Code snippet for #region</Description> 
     <Author>Microsoft Corporation</Author> 
     <SnippetTypes> 
      <SnippetType>Expansion</SnippetType> 
      <SnippetType>SurroundsWith</SnippetType> 
     </SnippetTypes> 
    </Header> 
    <Snippet> 
     <Declarations> 
      <Literal> 
       <ID>name</ID> 
       <ToolTip>Region name</ToolTip> 
       <Default>MyRegion</Default> 
      </Literal> 
     </Declarations> 
     <Code Language="csharp"><![CDATA[#region $name$ 
    $selected$ $end$ 
#endregion $name$]]> 
     </Code> 
    </Snippet> 
</CodeSnippet> 
</CodeSnippets> 

Second chỉnh sửa: Đó là công việc nhưng chỉ khi tôi thực hiện đoạn chèn. Từ intellisense này sử dụng một số đoạn khác tôi gues.

Vì vậy, có cách nào để thêm vùng của tôi từ intellisense không từ trình đơn chèn đoạn mã không?

+1

Trong Visual studio bạn có thể làm điều đó bằng cách chọn văn bản -> Nhấp chuột phải -> vòm với -> Region –

+0

Tôi đoán VS hỗ trợ điều đó không, http: // connect.microsoft.com/VisualStudio/feedback/details/266197/match-region-endregion-name – Kurubaran

+0

Tôi không nghĩ đây là một ý kiến ​​hay. Nếu bạn đã từng thay đổi tên của khu vực, có thể bạn sẽ quên làm như vậy trong phần '# endregion', tạo ra những mâu thuẫn khó hiểu. –

Trả lời

11

Nếu những gì bạn đang cố gắng để đạt được là ...

#region MyRegion 
//...lots of code... 
#endregion // end of MyRegion 

Bạn có thể làm điều này với một đoạn cái gọi là 'SurroundsWith'. Dưới đây là ví dụ một đoạn từ thư viện của tôi ...

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippet Format="1.0.0"  
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <Header> 
    <Title>Enregions a block of code</Title> 
    <Author>GJV</Author> 
    <Shortcut>enr</Shortcut> 
    <Description>Surrounds a block of code with region directives</Description> 
    <SnippetTypes> 
     <SnippetType>SurroundsWith</SnippetType> 
     <SnippetType>Expansion</SnippetType> 
    </SnippetTypes> 
    </Header> 
    <Snippet> 
    <Declarations> 
     <Literal Editable="True"> 
     <ID>RegionName</ID> 
     <ToolTip>Region Name</ToolTip> 
     <Default>MyRegion</Default> 
     </Literal> 
    </Declarations> 
    <Code Language="CSharp"> 
    <![CDATA[ 
    #region $RegionName$ 
    $end$   
    $selected$  
    #endregion // end of $RegionName$ 
    ]]>   
    </Code> 
    </Snippet> 
</CodeSnippet> 

Để sử dụng nó trong Visual Studio, đặt đoạn trong một file .snippet và lưu nó trong thư mục đoạn của bạn, sau đó vào Tools => Code Snippets quản lý => Thêm. Sau khi được thêm, bạn có thể sử dụng CTRK K + X chuẩn để truy cập.

Điều duy nhất cung cấp cho bạn qua đoạn mã được tích hợp cho vùng là tính linh hoạt để thêm nhận xét theo sau để cho biết phần cuối của khu vực. Bạn cũng có thể tùy chỉnh thêm điều này bằng cách thêm mở rộng bổ sung.

GHI CHÚ: dấu $ $ kết thúc chính thức mà bạn muốn con trỏ chuyển sang đất khi thao tác hoàn tất.

-2

Bạn không cần.

Bạn chỉ có thể làm điều này:

#region Some Region 
//I 
//am 
//assuming 
//a 
//lot 
//of 
//code 
//you 
//want 
//to 
//hide 
//goes 
//here 
//here 
#endregion 
//note that it doesn't say Some Region in the endregion 
+0

Tôi nghĩ anh ấy muốn khu vực kết thúc chỉ định tên khu vực? – christiandev

+0

@christiandev Tôi biết, nhưng tại sao? Nó làm cho không có sự khác biệt, trừ khi anh ta muốn làm một cái gì đó như thế này: '#region 1 #region 2 #endregion 1 #endregion 2' và điều đó sẽ gây VS tải trọng lẫn lộn. –

+3

Với một lớp lớn, các khu vực thường lớn và có #endregion cho biết #region nó tương ứng với (kể từ khi bắt đầu khu vực có thể tắt màn hình) có thể giúp phân biệt vị trí hiện tại trong mã của người đó. Tôi không nghĩ rằng OP đang cố gắng làm tổ/chồng lên các vùng. Tôi nghĩ OP đang cố gắng làm một điều gì đó tương tự như bình luận mà người ta có thể để lại sau cú đúp đóng của một khối, ví dụ: 'if (x) {...} // kết thúc nếu (x)' ... nhưng hãy tưởng tượng cơ thể là lớn và nhiều dòng. Nó không có gì để giúp trình biên dịch; chỉ là anh chàng đằng sau bàn phím. –

1

Bạn có thể thay đổi ReSharper mẫu mặc định cho #region tới:

#region $name$ 
    $END$ 
#endregion $name$ 

Cập nhật:

Strange, nhưng nếu bạn thay đổi mặc định #region mẫu, không có gì hoạt động. Bạn cần xác định mẫu của riêng mình, đặt đoạn mã cho mẫu đó (tức là reg) và đặt mã được viết ở trên vào đó.

+0

cách sử dụng mẫu ghi đè này? Tôi đã thực hiện nó nhưng vẫn sử dụng nó cũ: ( – harry180

+0

Đã cập nhật câu trả lời. Hãy thử tạo mẫu mới. – rpeshkov

+0

Tôi đã chỉnh sửa tạo mẫu cho khu vực nhưng có vẻ như không hoạt động;/ Tôi đã chỉnh sửa bài đăng của mình bằng cách thay đổi nó – harry180

1

Tôi khuyên bạn nên VSCommands.

Hãy nhìn vào phần "Mã Khối End Tagger Improvements"

Sửa 25.08.2014

Nó sẽ đưa đầu của khối mã (tên phương pháp aso.) như siêu liên kết màu xám sáng ở kết thúc của khối mã. Là siêu liên kết vì nó có thể nhấp và bạn có thể điều hướng đến đầu khối mã.

1

Việc xây dựng trong phiên bản của Visual Studio là Ctrl K + X

+0

Điều đó không thêm cùng tên trong phần cuối, như câu hỏi được yêu cầu. – Ben

4

Visual Studio 2017

Loại #RTABTAB, sau đó gõ tên của khu vực.

Điều này được xây dựng trong hành vi.