【问题标题】:Change or Add a Default Editor in Visual Studio在 Visual Studio 中更改或添加默认编辑器
【发布时间】:2015-12-11 13:15:13
【问题描述】:

我想在 Visual Studio 2012 中为文件类型添加一个新的(外部)默认编辑器。我的编辑器 (Notepad++) 支持通过程序参数直接跳转到特定行。遗憾的是,msdn reference 没有提到任何宏参数来使用给定上下文中的行(和字符)偏移量(即双击搜索结果时)。

是否可以在 Add ProgramArguments 字段中获取行和/或字符偏移量?

编辑:有没有办法通过包含有关文件、行和所选打开程序的信息的扩展来访问这些打开事件?

【问题讨论】:

    标签: visual-studio visual-studio-2012


    【解决方案1】:

    使用$(ItemPath) -n$(CurLine) 作为参数为我做了工作:

    【讨论】:

    • 遗憾的是,这只适用于文件已经在 Visual Studio 的文本编辑器中打开的情况下,我试图避免。当我将相同的参数应用于“添加程序”对话框作为外部编辑器时,宏 $(...) 似乎没有被解析,因为 Notepad++ 使用 C:\Program Files (x86)\Notepad++\$(ItemPath) 打开不存在。创建它?
    • @BeyelerStudios 哦。我懂了。你想从哪里打开它?
    • 主要来自查找结果窗口
    • @BeyelerStudios 我找了很多地方,没有找到任何相关的解决方案......祝你好运,我怀疑这可能......
    • 感谢您的调查,一旦我自己进一步了解问题,我会更新我的问题,但目前我被卡住了
    【解决方案2】:

    默认情况下是不可能的,因为没有Arguments 反映搜索结果。因此,您首先在 VisualStudio 中打开文件,然后使用外部工具。

    我认为您可以创建一个自定义 Visual-Studio 插件并在您的搜索结果选择中挂钩。查看可用于 VS 2015、2013 和 2012 的 Adding Search to a Tool Window。这种方式的某些实现似乎是 Quick Open File Plugin for VS2010,但缺少输入行号的文本框。

    MSDN 上创建 VS 插件的更多文档

    顺便说一句,您是否检查了“提示参数”选项以扩展 Thomas 答案:

    【讨论】:

      【解决方案3】:

      您可以通过两个步骤获得解决方案,一旦您获得搜索结果,这两个步骤都需要很短的时间。 Double-click the resultpress 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++ 为搜索结果打开行列上的文件!

      还剩下什么?

      • 从 cmd 文件中取出 pause,因为它仅用于调试目的。
      • 决定是否需要-multiInst -nosession 参数
      • 查看Arguments for External Tools,了解启动外部工具时分配的所有变量。

      结论

      这是一个有趣的问题,也是我以前从未探索过的领域。我可能会自己使用这种技术并用于其他目的。

      【讨论】:

      • 我认为您无法从一个特定的搜索结果源代码行(您双击的那个)中获取行和列位置,这是 OP 想要的,只有“查找结果”工具窗口的当前行和列位置,根本不一样。
      • 当您双击搜索结果时,您将被带到结果的行和列。使用此信息启动外部工具。我在帖子顶部将其称为两步解决方案。
      • 好吧抱歉,我没看到。但是,恕我直言,这不是一个足够令人满意的答案:-)
      • 谢谢,但我真的试图避免在内部编辑器中打开文件,因为它为大型 xaml 文件启动了一个有问题的后台进程 - 到目前为止在外部编辑器中打开它(通过将其设置为默认编辑器来工作)然后“转到行”对我来说是最好的工作......
      猜你喜欢
      • 2018-09-30
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 2014-10-05
      • 2011-01-27
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多