智能感知對於它的功能很好,但我經常發現自己渴望像Vim這樣的編輯「粗糙」的文本完成。我似乎無法找到一個能夠完成一個單詞的工具 - 可能是在一個字符串中,任何地方都可以 - 然後讓VS爲我完成它(基於之前在當前緩衝區中鍵入的內容,或者在所有打開的文件中,或者它想要工作)。在Visual Studio中啞完成
我錯過了什麼嗎? (或者如果有必要,是否有擴展來做到這一點?)看起來它實際上比Intellisense更容易實現,但它確實可以節省打字。
謝謝!
智能感知對於它的功能很好,但我經常發現自己渴望像Vim這樣的編輯「粗糙」的文本完成。我似乎無法找到一個能夠完成一個單詞的工具 - 可能是在一個字符串中,任何地方都可以 - 然後讓VS爲我完成它(基於之前在當前緩衝區中鍵入的內容,或者在所有打開的文件中,或者它想要工作)。在Visual Studio中啞完成
我錯過了什麼嗎? (或者如果有必要,是否有擴展來做到這一點?)看起來它實際上比Intellisense更容易實現,但它確實可以節省打字。
謝謝!
您可能想看看VisualAssist加載項。它的自動完成功能知道您最近輸入的內容,所以它默認選擇最近的匹配。它還可以在比標準智能感知更多的地方工作(例如包含路徑)。
不過提醒一句,當你開始使用它,這是很難回去......
找不到如何自動完成字符串文字,我錯過了什麼? – 2015-06-28 04:50:41
@VincentXue:據我所知,除了**包含路徑之外,Visual Assist不會自動完成字符串文字**。 – 2015-08-18 10:07:06
在VS2010實現智能感知是非常容易的 - 假設你有2個問題一個現成的答案:
在我的自定義編輯,我就使NDjango解析器給我我需要什麼,只有10%的實際花費90%的時間「實現」智能感知
編輯
項目開放源代碼隨時歡迎download的代碼,並與它一起玩。
夠公平,但這確實不需要涉及智能感知。也就是說,我不需要「代碼完成」,只需根據我之前鍵入的單詞完成簡單的文本完成,因此我不需要再次鍵入它們。 (另外請注意,除標準智能感知之外,還必須提供此功能;我不打算完全替換代碼完成。) – 2009-11-24 20:05:09
我明白你想要什麼,我不知道是否有任何類型的東西已經存在,我想說的是,實現自己的版本會非常容易,包括代碼完成補充(而不是替代)現有版本的非常有效的一點。這裏的要點是,無論您的文本完成方式多麼容易和明顯,下一個人將對自己的工作方式有自己的想法 – mfeingold 2009-11-24 20:38:31
您仍需要連接編輯器的IntelliSense API,因爲這是提供完成列表等......但是讓它列出緩衝區中的所有其他單詞是相當簡單的。特別是如果您將VS2010的目標定位於更加完善的新編輯器擴展性API。 – 2009-12-08 20:39:17
看看ViEmu,Visual Studio,Word,Outlook和SQL Server的Vi/vim仿真。如果它仍然不能滿足你的需求,那就試着自己動手。查看Visual Studio Extensibility Reference和this tutorial以幫助您開始使用VS加載項。
我已經在使用ViEmu,其實:) – 2009-12-06 21:02:53
2010年的可擴展性模型要簡單得多,但(顯然)仍然是一個移動目標。
應該可以使用the intellisense part of this 提供一個ICompletionSource其合併在要與現有的實現結果一起提供的任何值得到的東西簡單。
監視名稱的當前緩衝區應該涉及到一些玩弄ITextView和ITextBuffer。
有一個修改codeplex上的presentation layer的例子,但你應該能夠使用它作爲嘗試改變事物數據端的基礎。
在其他的答案說,智能感知在Visual Studio 2010有了很大的改善。不僅是可擴展性,還有實現。
它現在過濾包含他們任何地方的鍵入名稱的成員列表。這也適用於類和類型,所以你不必記住完整的類型或類名。最後並非不重要,您可以使用Pascal Case命名模式來過濾列表。這意味着減少打字和減少錯誤。
有關VS2010中Intellisense改進的更多信息,請參閱ScottGu's blog。
CodeRush顯示關於完成字符串或其他地方的單詞的建議。他們有一個免費版本,但我不知道它是否支持此功能。來自Jetbrains的
Resharper也具有非常智能的完成。 CTRL + SHFIT + Space激活其「智能」代碼完成(超出正常的CTRL +空格結果),這是類型和上下文敏感的。我經常發現它爲我選擇合適的名字。
如果你有幾個詞你要填寫,你可以很容易地創建一些片段來做到這一點。
這不僅僅是一種破解,它可能會有幫助。
段XML:
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>retype</Title>
<Shortcut>retype</Shortcut>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="csharp">
<![CDATA[ThisIsTheTextIHateToRetype();$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
有趣的想法。我有時候會發現自己輸入的是幾乎相同的長字符串文字,像這樣的東西比複製/粘貼更容易。 – 2009-12-07 22:41:07