มีทางลัดในการย้ายไปมาระหว่างส่วนหัวและไฟล์ต้นฉบับใน VC ++ หรือไม่?


112

นี่เป็นคุณสมบัติที่ฉันคุ้นเคยใน Eclipse ( Ctrl+ Tab) Visual C ++ มีความเทียบเท่าหรือไม่



@ LưuVĩnhPhúcเมื่อคุณอยู่ในส่วนหัวหรือซอร์สโค้ดใน Eclipse ให้กด Alt-Tab และ Eclipse ควรสลับระหว่างแหล่งที่มาและส่วนหัวโดยสมมติว่าคุณได้จัดทำดัชนีโครงการไว้อย่างถูกต้อง
MrMas

คำตอบ:


138

ใน Visual Studio 2013 และใหม่กว่าจะมีแป้นพิมพ์ลัดเริ่มต้นสำหรับสิ่งนี้: Ctrl+ K, Ctrl+ O (คุณจะต้องกด Ctrlค้างไว้แล้วพิมพ์koแล้วปล่อยCtrl )

ในเวอร์ชันก่อนหน้าโปรดดู:

Visual Studio Macro เพื่อสลับระหว่างไฟล์ CPP และ H

หรือ

เปิดไฟล์ที่สอดคล้องกันใน Visual Assist


2
Visual Assist เป็นเครื่องมือที่ยอดเยี่ยม - ฉันขอแนะนำสำหรับนักพัฒนาทุกคนที่ใช้ MSVC
Stephen Nutt

10
สำหรับผู้ใช้ VisualAssist ที่ขี้เกียจ:Alt + O
nimcap

2
ใครมีวิธีแก้ VS2013 บ้างครับ?
Shaun Rowan

5
สร้างขึ้นใน VS 2013 blogs.msdn.com/b/vcblog/archive/2013/08/23/…
Kyle Alons

3
ตกลงฉันไม่ดี ไม่ทราบว่า Ctrl + K & Ctrl + O เป็นคำสั่งทางลัดเดียว ไม่ใช่สองตัวเลือกที่เหมือนกัน อาจจะคุ้มค่าที่จะกล่าวถึงในคำตอบสำหรับผู้ที่ยังใหม่กับ VS :)
Petr Peller

31

ใน Visual Studio 2013 แป้นพิมพ์ลัดเริ่มต้นสำหรับสิ่งนี้คือCtrl+ K, Ctrl+O


ไม่ได้ผลสำหรับฉัน 2013 Community Edition การตั้งค่าทั่วไป. ชื่อ commad ในหน้าต่าง Customize / Keyboard คืออะไร?
Jurlie

12
ชื่อคำสั่ง:EditorContextMenus.CodeWindow.ToggleHeaderCodeFile
codekaizen

24

คุณสามารถเพิ่มมาโครนี้ในการกำหนดค่า VS ของคุณ (ผ่านเครื่องมือ -> มาโคร -> มาโครเอ็กซ์พลอเรอร์) จากนั้นกำหนดปุ่มลัดให้ (ผ่านเครื่องมือ -> ตัวเลือก -> สภาพแวดล้อม -> แป้นพิมพ์)

ฉันเพิ่งเขียนมัน (หมายถึงลองทำมานานแล้ว!) แต่ดูเหมือนว่าจะใช้ได้ผลทั้งใน VS2008 และ VS2010

เนื่องจากเป็นมาโครคุณจึงสามารถแก้ไขเพื่อรวมกฎที่คุณต้องการได้ (เช่นดูในโฟลเดอร์อื่นหรือกฎการตั้งชื่อพิเศษหากคุณมีส่วนหัวเดียวที่แชร์โดยไฟล์ cpp หลายไฟล์หรือคล้ายกัน)

นี่คือมาโคร (ฉันแน่ใจว่ามันจะเขียนได้ดีกว่านี้ฉันไม่คุ้นเคยกับวัตถุ VS และมีเพียงมาโครเท่านั้นที่รู้ว่าใช้. Net ประมาณครึ่งทางในการเขียนสิ่งนั้น :)):

Sub FileSwitch()
    Try
        Dim CurrentPath As String = DTE.ActiveDocument.FullName
        Dim OtherPath As String

        If (IO.Path.HasExtension(CurrentPath)) Then
            Dim CurrentExtension As String = IO.Path.GetExtension(CurrentPath)

            Select Case CurrentExtension
                Case ".h", ".hpp", ".hxx"
                    OtherPath = IO.Path.ChangeExtension(CurrentPath, ".cpp")
                    If (Not IO.File.Exists(OtherPath)) Then
                        OtherPath = IO.Path.ChangeExtension(CurrentPath, ".c")
                        If (Not IO.File.Exists(OtherPath)) Then
                            OtherPath = IO.Path.ChangeExtension(CurrentPath, ".cxx")
                        End If
                    End If
                Case ".cpp", ".c", ".cxx"
                    OtherPath = IO.Path.ChangeExtension(CurrentPath, ".h")
                    If (Not IO.File.Exists(OtherPath)) Then
                        OtherPath = IO.Path.ChangeExtension(CurrentPath, ".hpp")
                        If (Not IO.File.Exists(OtherPath)) Then
                            OtherPath = IO.Path.ChangeExtension(CurrentPath, ".hxx")
                        End If
                    End If
                Case Else
            End Select
            If (OtherPath <> Nothing) Then
                DTE.ItemOperations.OpenFile(OtherPath)
            End If
        End If

    Catch ex As System.Exception
        MsgBox(ex.Message)
    End Try
End Sub

นี่คือภาพหน้าจอ (กว้างมาก :)) ที่แสดงว่าตัวแก้ไขมาโครและกล่องโต้ตอบฮอตคีย์ / ตัวเลือกควรมีลักษณะอย่างไรเพื่อช่วยให้ผู้ที่ไม่คุ้นเคยกับพวกเขา:

ใส่คำอธิบายภาพที่นี่


1
เคล็ดลับแมโคร VS ที่ชื่นชอบอีกอย่าง: บันทึกมาโครของการแนบดีบักเกอร์กับ exe ที่คุณใช้งานอยู่เสมอจากนั้นติดที่แถบเครื่องมือ คลิกเพียงครั้งเดียวสิ่งที่แนบมากับกระบวนการทำงานนั้นเมื่อใดก็ตามที่คุณต้องการแก้ไขข้อบกพร่อง
Leo Davidson

ว้าวเยี่ยมมาก! ทำงานได้ดีกว่า Nifty Solutions Plugin เนื่องจาก Plugin สามารถสลับระหว่าง. h และ. cpp ได้เท่านั้นจึงไม่เปลี่ยนจาก. hpp เป็น. cpp
j00hi

แต่จะวางมาโครไว้ที่ไหน? ด้วยเหตุผลบางอย่าง VS2010 ของฉันมีมาโคร "Module1" อยู่แล้ว ... ดังนั้นฉันจึงดับเบิลคลิกเพื่อแก้ไขและแทรกโค้ดมาโครใน "Public Module Module1" จากนั้น Tools => Options => Environment => Keyboard เพื่อตั้งค่าทางลัดใน Text Editor
Qwertie

ยอดเยี่ยมทดสอบและใช้งานได้ คำตอบที่โพสต์ในเดือนพฤศจิกายน 2010 - ยังใช้ได้ในเดือนกรกฎาคม 2555 สมบูรณ์แบบ
rptr

1
อเล็กซ์: มาโครใช้กับ Visual Studio ได้ทั่วโลก พวกเขาจะบันทึกไว้ใน "โครงการแมโคร" (ซึ่งช่วยให้คุณสามารถบันทึกและโหลดกลุ่มของแมโคร) แต่สิ่งเหล่านี้ไม่เกี่ยวข้องกับโซลูชัน / โครงการประเภทปกติเท่าที่ฉันสามารถบอกได้ ฉันมีมาโครหลายตัวที่กำหนดไว้ในโปรเจ็กต์มาโครเริ่มต้นซึ่งพร้อมใช้งานก่อน (และหลัง) ฉันเปิดโซลูชันหรือโปรเจ็กต์ใด ๆ
Leo Davidson

9

ลองPhatStudio ฟรีและมาพร้อมกับตัวติดตั้งที่ง่ายดาย

  • ALT+ S= สลับระหว่างไฟล์ส่วนหัว / แหล่งที่มา

  • ALT+ O= เปิดไฟล์ (รองรับการค้นหาทันทีผ่านการพิมพ์เช่นเมนูเริ่มใน Windows Vista / 7)


ขอบคุณนี่เป็นวิธีแก้ปัญหาที่ง่ายที่สุดและฟรีด้วย
Russell Davis

8

ลองใช้ Visual Assist ซึ่งมีคุณสมบัตินี้มาก (ในกลุ่มอื่น ๆ ):

http://www.wholetomato.com/

ฟังก์ชันการเรียกดูโค้ด - ซึ่งส่วนหัว / cpp swap เป็นส่วนหนึ่ง - ดีมาก

(ฉันยังให้คะแนนคุณสมบัติ intellisense และ refactoring แต่ไม่ใช่ทุกคนที่ฉันเคยพูดด้วยจะเห็นด้วยกับฉัน)

แก้ไข: เพิ่งจำได้ว่า Nifty Solution Plugin ยังทำสิ่งนี้ - รวมถึงสิ่งอื่น ๆ ที่คล้ายกับ Visual Assist แม้ว่าจะไม่มีอะไรอื่น - และฟรี:

http://code.google.com/p/niftyplugins/

(ปลั๊กอิน perforce ของผู้ชายก็ยอดเยี่ยมเช่นกันดีกว่าขยะ VSSCC เริ่มต้นมาก)


ฉันจะให้ Visual Assist ดู ฉันสันนิษฐานว่าเป็นภาษา. NET เท่านั้น
เนท

5

ใน Visual Studio 2008 และ 2010 คุณสามารถคลิกขวาในไฟล์. cpp ของคุณแล้วเลือก Go To Header File ... ซึ่งจะนำคุณไปในทิศทางเดียว สำหรับทิศทางอื่น ๆ หากคุณคลิกขวาที่สิ่งที่คุณกำลังประกาศในส่วนหัวและเลือกไปที่คำนิยามนั่นจะนำคุณไปในทิศทางอื่น คุณอาจต้องผ่านกล่องโต้ตอบการแก้ไขความคลุมเครือหากคุณเลือกตัวสร้างเนื่องจากชื่อฟังก์ชันตรงกับชื่อคลาส แต่ถ้าคุณเลือกอย่างอื่นคุณจะไปตรงที่ที่คุณต้องการ ฉันรู้ว่านี่เป็นวิธีการคลิกสองครั้งมากกว่าการกดแป้นพิมพ์หนึ่งครั้ง แต่มันทำในสิ่งที่คุณต้องการ


5

หากคุณวางเมาส์เหนือการประกาศฟังก์ชันในส่วนหัวและกด F12 ไฟล์ cpp จะเปิดขึ้นตามคำจำกัดความของไฟล์ cpp ... ฉันใช้คุณสมบัตินี้อย่างกว้างขวาง!


5

ฉันไม่เห็นคำตอบนี้ที่นี่ แต่อย่างน้อยใน Visual Studio 2012 (รวม Express!) คุณสามารถกำหนดคำสั่งแป้นพิมพ์ของคุณเองเพื่อไปที่ไฟล์ส่วนหัว (หมายเหตุ: ไปทางเดียวเท่านั้น - คุณไปไม่ได้ กลับไปที่ไฟล์ต้นฉบับขออภัย ... )

  1. ไปที่ Tools / Options / Environment / Keyboard
  2. ค้นหาคำสั่งต่อไปนี้: EditorContextMenus.CodeWindow.GoToHeaderFile
  3. กำหนดคีย์ผสมที่คุณต้องการ (Alt-S ใช้งานได้)
  4. กำไร

ไม่แน่ใจว่า VS รุ่นใดที่ใช้งานได้ แต่ไม่ต้องใช้ Add-in ใด ๆ และดูเหมือนว่าจะทำเคล็ดลับอย่างน้อยหนึ่งทิศทาง


ใน Visual Studio 2013 มีคำสั่งที่เรียกว่า EditorContextMenus.CodeWindow.ToggleHeaderCodeFile ซึ่งทำเช่นนั้นสลับระหว่างไฟล์. h และ. cpp
Jaanus Varus

4

ลองใช้ Switch - เป็นส่วนเสริมที่ให้คุณปัดระหว่างซอร์สและส่วนหัวโค้ดและตัวออกแบบ XAML และ codebehind เป็นต้น:

http://www.dwmkerr.com/switch/หรือโดยตรงจากProducts and Extensions for Visual Studio


1
นี่คือสิ่งที่ฉันต้องการ !!!!!!!!!!!! ขอบคุณ !!!!!!!!!!! หากการติดตั้งไม่ทำงานกว่าการใช้อย่างใดอย่างหนึ่งจากcodeproject.com/Articles/324611/...
Michal Sznajder

3

ฉันเป็นแฟนของ Visual Assist ที่ทำสิ่งนี้ มันไม่ถูก แต่มันมีฟังก์ชันมากกว่าการสลับระหว่างส่วนหัวและแหล่งที่มา ฉันยังใช้ไฟล์ที่เปิดอยู่ในคุณสมบัติการเรียกดูโปรเจ็กต์และคลาสมากมาย มาโครฟรีแน่นอน ...



2

สำหรับ Visual Studio 2013 ดังที่ผู้อื่นกล่าวถึงมันเป็นคำสั่งที่ชื่อว่า:

EditorContextMenus.CodeWindow.ToggleHeaderCodeFile

และมีการรวมกันของคีย์เริ่มต้น: Ctrl+ K, Ctrl+ Oแต่สามารถเปลี่ยนแปลงได้หากคุณแนะนำชุดคีย์ใหม่ที่คุณชอบใน

กดปุ่มลัด:

ภายใต้

เครื่องมือ -> ตัวเลือก -> สิ่งแวดล้อม -> คีย์บอร์ด

ดังนั้นคุณสามารถเลือกการรวมกันปุ่มที่กำหนดเองเป็นที่ชื่นชอบสำหรับ .h สลับ .cpp เป็น+CtrlTab


1

Visual Assist ยังไม่รองรับรุ่น Visual studio express ดังนั้นคุณจะติดอยู่กับมาโครหากคุณใช้ IDE นั้น>



0

ด้วยภูมิปัญญาที่ จำกัด (ใน) MS ตัดสินใจที่จะลบมาโครใน MSVS 2012 ดังนั้นมาโครด้านบนจะไม่ทำงาน

สำหรับ MSVS 2012 ฉันพบสิ่งนี้:

http://www.dwmkerr.com/switch/

สามารถกำหนดค่าได้สูง + หากคุณต้องการช่วยปรับปรุงคุณสามารถทำได้ใน GitHub


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.