【问题标题】:does Visual Studio 2010 not have a "join lines" keyboard shortcut?Visual Studio 2010 没有“加入行”键盘快捷键吗?
【发布时间】:2011-04-19 15:06:15
【问题描述】:

Visual Studio 2010 没有“加入行”键盘快捷键吗?

编辑 - 即在 X 行的任何地方,我按一次快捷键,然后 X+1 行连接到 X 行(可以说消除它们之间的 CR)

【问题讨论】:

  • 什么意思?在行的开头/结尾删除将连接两行。你在想什么?
  • 就是在 X 行的任何地方,我按了一次快捷键,然后 X+1 行连接到 X 行(可以说是消除了它们之间的 CR)
  • @Greg- 看起来你的三个相同的 cmets 需要合并而不是加入。 :-)
  • 我不会为你做这些跑腿的工作,但你可以看看 VsVim 如何实现 J 操作符来加入行。

标签: visual-studio visual-studio-2010 keyboard-shortcuts


【解决方案1】:

Microsoft Visual Studio Professional 2019(版本 16.8.4)现在内置了一个快捷方式,耶!
shift+alt+ L,然后是shift+alt+ J
我记得 Lines(L) - Join(J) 的快捷方式(它可能是 J ... L 但是啊,我认为是分组)
这在菜单中可用Edit -> Advanced -> Join lines

【讨论】:

  • 请注意,这具有奇怪的行为和随机的不良行为(从 v16.8.5 开始):加入的行上的最后一个字符被随机删除,有时会删除多个字符(删除多个字符可能只出现在旧版本中);如果光标位于行尾,则光标在连接后移动到下一行(如果您正在执行多个连接,这真的很烦人)。
【解决方案2】:

我一直在使用 CodeMaid,但是对于大文件来说它非常慢。为了用宏复制 CodeMaid 的行为,我将 Ray Vega 和 javs 的解决方案组合成以下:

    Sub JoinLines()
      DTE.ActiveDocument.Selection.EndOfLine()
      DTE.ExecuteCommand("Edit.WordDeleteToEnd")
      DTE.ActiveDocument.Selection.Insert(" ")
    End Sub

注意:由于宏在 VS2013 中已被删除,我使用的是 Visual Commander 扩展,因此宏实际上看起来更像:

Imports EnvDTE
Imports EnvDTE80
Imports Microsoft.VisualBasic

Public Class C
  Implements VisualCommanderExt.ICommand

  Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run
    DTE.ActiveDocument.Selection.EndOfLine()
    DTE.ExecuteCommand("Edit.WordDeleteToEnd")
    DTE.ActiveDocument.Selection.Insert(" ")
  End Sub
End Class

【讨论】:

    【解决方案3】:

    这不是你想要的,但我觉得它仍然很有用。

    如果您在第一行的末尾,请按 Ctrl+Del 加入下一行并删除它们之间的所有空格。

    您仍然必须在行尾,但这几乎适用于所有编辑器,无需任何修改。

    【讨论】:

      【解决方案4】:

      尝试 End 然后按 Delete 键序列。

      End 移动到行尾,Delete 键删除 EOL 在光标之后。

      【讨论】:

      • 这个答案忽略了一个重要的事实,即您要删除任何引导第二行加入的空格。这正是与 Vim 的 j 键等效的 Visual Studio 所需要的。
      • 这会复制空格(从下一行缩进到我们要加入的行。因此额外的空格。
      【解决方案5】:

      如果你想让连接功能像 Vim 一样(按下 Shift + J)然后使用这个宏来连接、插入空格并将光标放在空格后面:

      Sub JoinLines()
          Dim textSelection As TextSelection = DTE.ActiveDocument.Selection
          With textSelection
              .EndOfLine()
              .Insert(" ")
              .Delete(1)
          End With
      End Sub
      

      只需将其分配给 Alt + J (如 Ctrl + JCtrl + Shift + J)。

      【讨论】:

        【解决方案6】:

        我为此使用CodeMaid 扩展名,它提供了 Ctrl + M Ctrl + J连接线的快捷方式(以及其他一些有用的东西)

        【讨论】:

          【解决方案7】:

          据我所知没有。

          但是,您可以使用以下代码创建并保存新的 VS 宏:

          Sub JoinLines()
              DTE.ActiveDocument.Selection.EndOfLine()
              DTE.ExecuteCommand("Edit.Delete")
              DTE.ActiveDocument.Selection.EndOfLine()
          End Sub
          

          assign a keyboard shortcut to it(如 CTRL + j

          这段代码将把当前行和它正下方的行连接起来。

          【讨论】:

          • 我想他想和它下面的那行一起加入,意思是你可能可以把宏的前两行去掉。
          • 假设他问是因为他是 vim 用户,你实际上想要:EndOfLine,删除,插入一个空格(我认为),向左移动一个字符。
          • 这看起来不错 - 只是试图在 VS2010 中弄清楚如何将键盘分配给 JoinLines Sub 方法......
          • @Greg-Tools -> Options -> Environment -> Keyboard。在Show commands containing: 的文本字段中,只需输入JoinLines,您的新宏就会显示出来。然后在Press shortcut keys 中键入Ctrl + j,单击Assign,最后单击OK。它应该在那之后工作。
          • Visual Studio 2012/2013 不支持宏:stackoverflow.com/questions/12062515/…
          猜你喜欢
          • 2011-05-14
          • 1970-01-01
          • 1970-01-01
          • 2011-03-01
          • 2011-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多