Есть ли в VisualStudio 2010 ярлык для завершения WORD-подобного завершения? - PullRequest
7 голосов
/ 17 августа 2010

Я недавно перешел с Java-разработки и Eclipse IDE на C # .NET и VisualStudio 2010. Что мне действительно не хватает, так это Alt + / Eclipse для завершения слова.Я НЕ говорю об автозаполнении IntelliSense.Я хочу, чтобы текстовый редактор закончил писать слова, которые уже существуют где-то в документе, но не будут отображаться в IntelliSense, например строковые литералы.

В Notepad ++ это Ctrl + Введите ярлык.В Eclipse это вышеупомянутый Alt + /

Может ли VS2010 сделать то же самое?Если не по умолчанию, может ли кто-нибудь указать мне приличный макрос VB, который я мог бы подключить к своему VS2010, чтобы сделать это?

Спасибо.

РЕДАКТИРОВАТЬ

Обратите внимание, что есть разница между завершением CODE (то есть тем, что в большинстве IDE / умных редакторах выполняется Ctrl + Пробел) и простым WORD завершением (то, что я ищу).Завершение Word не пытается проанализировать текущий контекст или угадать, какой тип / метод вам нужен.Все, что он делает, пытается завершить работу, которую вы начали печатать, просматривая местоположение курсора и ища похожие слова, уже встречающиеся в текущем документе.

Ответы [ 4 ]

3 голосов
/ 21 мая 2012

Я создал простой макрос VS:

Public Sub CompletePreviousWord()        

    Dim doc As EnvDTE.Document = DTE.ActiveDocument
    Dim selection As TextSelection = doc.Selection        

    ' word to left is what we want to find        
    selection.WordLeft(True, 1)
    Dim findWord As String = selection.Text

    ' get search text from the beginning of the document
    Dim ep As EditPoint = selection.ActivePoint.CreateEditPoint()
    ep.StartOfDocument()
    Dim searchText As String = ep.GetText(selection.ActivePoint)

    Dim match = Regex.Match(searchText, "[^a-zA-Z0-9_]?(" + findWord + "[a-zA-Z0-9_]*)", _
        RegexOptions.IgnoreCase Or RegexOptions.RightToLeft)        

    If match.Success Then
        ' replace the whole world - for case sensitive and to allow undo (by doing only one operation)            
        selection.Insert(match.Groups.Item(1).Value)
    Else            
        selection.WordRight(False, 1)
    End If

End Sub

Ограничил его альт-пространством, и он добился цели.

Шломи

2 голосов
/ 13 сентября 2010

Может ли VS2010 сделать то же самое?

Нет по умолчанию.

Если не по умолчанию, может ли кто-нибудь указать мне приличный макрос VB, который я мог бы подключить к своему VS2010 для этого? Не знаю, что существует. Но это может быть хороший проект.

0 голосов
/ 31 января 2018

В Visual Studio Code (VSC) есть расширение «Другое завершение слова» от getogrand.Я знаю, что ваш вопрос касался Visual Studio, но это может представлять интерес для тех, кто ищет это, кто попал сюда.

Да, трудно найти это, так как термин «завершение кода» встречается чаще.

0 голосов
/ 21 марта 2012

VS2010 имеет эту функцию по умолчанию:

Ярлыки: «ALT + СТРЕЛКА ВПРАВО» или «CTRL + ПРОБЕЛ»

Кнопка на панели инструментов: (поскольку я новый пользователь, откройте снимок экрана вручную на http://i.stack.imgur.com/OyiHY.png)

Соответствующее имя объекта команды: Edit.CompleteWord (см .: http://msdn.microsoft.com/en-us/library/xte2hh6a%28v=vs.71%29.aspx)

Кстати, я использую VS2010 professional.

...