Изменение или добавление редактора по умолчанию в Visual Studio

Я хотел бы добавить новый (внешний) редактор по умолчанию для типа файла в Visual Studio 2012. Мой редактор (Notepad ++) поддерживает прямое переключение на определенную строку через аргументы программы. К сожалению, ссылка msdn не упоминает какие-либо макропараметры для использования смещения строки (и символа) в данном контексте (т.е. При двойном щелчке результат поиска).

Можно ли получить смещение строки и/или символа в поле "Аргументы" в "Добавить программу"?

AddProgrammeDialog

Изменить: есть ли способ доступа к этим открытым событиям через расширения с информацией о файле, строке и выбранной программе открытия?

Ответы

Ответ 1

Используя $(ItemPath) -n$(CurLine) в качестве аргументов, работала для меня:

введите описание изображения здесь

Ответ 2

По умолчанию это невозможно, потому что нет Аргументы, отражающие результат поиска. Таким образом, вы сначала открываете файл внутри VisualStudio, а затем с помощью внешнего инструмента.

Я думаю, вы могли бы создать настраиваемый плагин Visual Studio и подключиться к выбору результатов поиска. Посмотрите Добавление поиска в окно инструмента, доступное для VS 2015, 2013 и 2012. Некоторое выполнение этого способа выглядит как Quick Open File Plugin для VS2010, но отсутствует текстовое поле для ввода линейного номера.

Дополнительная документация для создания VS-плагинов на MSDN

Btw, проверили ли вы "Promt for arguments" вариант для распространения ответа Томаса:

Внешние инструменты VS Dialog

Ответ 3

Вы можете получить решение для этого, которое занимает 2 шага, каждый из которых занимает мало времени, как только у вас есть результаты поиска. Double-click the result, press ctrl-shift-alt-L (может быть изменено, конечно).

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

Создайте cmd файл, который запустит notepad ++ с аргументами файла, строки и столбца

Сохраните код ниже в d:\util\startnppwith3args.cmd

setlocal
set _file=%0
set _line=%1
set _column=%2
set _line=%_line:"=%
set _column=%_column:"=%
: remember to use "" as first arg as blank title so we call npp properly :)
start "" "F:\Program Files (x86)\Notepad++\notepad++.exe" -multiInst -nosession -n%_line% -c%_column% %_file%
pause
endlocal

Создать внешний инструмент для вызова startnppwith3args.cmd

tools | External Tools...

введите описание изображения здесь

Запомните позицию этой команды, в этом случае 3.

Создать комбинацию клавиш для команды "command3"

tools | Options | Keyboard и найдите externalcommand

введите описание изображения здесь

Назначьте желаемую комбинацию клавиш для этой команды ctrl-shift-alt L например.

Убедитесь, что ваша команда выполнена в меню "Сервис"

введите описание изображения здесь

Теперь добавьте все в действие

  • Открыть файл в Visual Studio
  • Искать что-то в файле
  • Дважды щелкните нужный результат поиска
  • Нажмите ctrl-shift-alt L

Notepad ++ открывает файл в строке и столбце для результата поиска!

введите описание изображения здесь

Что осталось?

  • Выньте pause из файла cmd, поскольку он использовался только для целей отладки.
  • решить, хотите ли вы -multiInst -nosession аргументы
  • Посмотрите Аргументы для внешних инструментов для всех переменных, которые назначаются при запуске внешнего инструмента.

Заключение

Это был интересный вопрос, и область, которую я раньше не изучал. Я мог бы использовать эту технику сам и для других целей.