【问题标题】:Pad selected lines to cursor position in VSCode将选定的行填充到 VSCode 中的光标位置
【发布时间】:2020-05-04 16:51:19
【问题描述】:

在 Visual Studio 2019 中,我可以使用 Alt+Shift+(Arrow Keys) 多行编辑“虚拟”空白然后按任意键使所选列的所有行都用空格填充,我经常使用它来使初始化代码更易于阅读。但是,当我切换到 Visual Studio Code 时,我找不到等价物。我能找到的最接近的东西是 Ctrl+Alt+(箭头键)。这不是我所需要的,因为它只将每行光标放在末尾,而不是前面示例中的“虚拟”空白。

这是 Visual Studio 2019 中的一个可视化示例(我不知道如何制作 GIF):

在 VSCode 中是否有任何等价物,还是我暂时没有它?

【问题讨论】:

  • C 和 C++ 是不同的语言 :) (改变了你的标签)

标签: c++ visual-studio-code vscode-snippets


【解决方案1】:

好问题,我找不到在 VScode 中做同样事情的方法,但这里有一个小技巧可以达到同样的效果:

  • Ctrl+Alt+(箭头键)所有行
  • 结束按钮
  • Tab 结束,所以最左边的光标就是您想要的位置
  • 逃跑
  • Ctrl+Alt+(箭头键)再次输入所有行

显然,它不像工作流程那么好……但它确实有效。您还可以查看 VScode 扩展,以使其更快或自己制作

【讨论】:

  • @James 我想这可以通过 Shift + End 然后退格来解决
【解决方案2】:

你可以用宏很好地做到这一点。使用multi-command 之类的宏扩展名将其放入您的settings.json

"multiCommand.commands": [

  {
    "command": "multiCommand.padTrailingSpaces",
    "sequence": [
      "editor.action.insertCursorAtEndOfEachLineSelected",
       "cursorHomeSelect",
      {
        "command": "editor.action.insertSnippet,

                       // pad end of each line with lots of spaces's'
        "args": {
          "snippet": "$TM_SELECTED_TEXT                                              ",
        }
      },

      "cursorHomeSelect",
      {
        "command": "editor.action.insertSnippet",  
        "args": {

          // keep first 30 characters, increase if you typically need more
          "snippet": "${TM_SELECTED_TEXT/(.{30}).*/$1/g}",  
        }
      }
    ]
  }
]

上面的代码在每一行的末尾放置了一个光标,添加了比你应该需要的更多的空格,然后每行只保留前 30 个字符。

选择一些键绑定(在 keybindings.json 中):

{
  "key": "alt+s",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.padTrailingSpaces" },
  "when": "editorTextFocus" 
},


首先选择您想要填充的所有行,然后触发您的键绑定。然后,至少您将所有光标都与填充对齐,并且可以轻松地同时向左或向右移动所有光标。

您可能可以将我仅用于演示目的的30 减少一些 - 取决于您最长的线路通常有多长。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多