Visual Studio 使用Ctrl+单击选择VS代码中的单词

sulc1iza  于 2022-11-17  发布在  其他
关注(0)|答案(6)|浏览(468)

在Visual Studio中,如果您按住CTRL键并按一下文字,它会选取整个文字。如果您拖曳,它会逐字选取文字。
我发现Visual Studio的这个特性在我复制粘贴少量代码时非常有用,因为我可以一直按住Ctrl,选择单词,然后按C、X或V来移动内容。
在VS程式码中,您无法这样做。相反,CTRL+CLICK会系结至“移至定义”。
在此上下文中,是否有办法使VS代码的行为与Visual Studio相匹配?

ajsxfq5m

ajsxfq5m1#

正如@phuzi在注解中所说的,您可以使用双击来选择单词,或者双击并拖动来逐个选择单词(它将捕捉每个单词的最后一个字符)。如果您在一行上双击三次或在num行上单击,它将选择整行(最后一个不可见的字符为'\n')。
如果您按CTRL + D,它将选择光标所在的单词。如果同一单词有多个示例,您可以使用CTRL + D依次选择它们。

t8e9dugd

t8e9dugd2#

你可以通过ALT+CLICK设置多个光标。然后你将选择你的文本/代码的多个部分,你可以非常容易地复制和粘贴。

ui7jx7zq

ui7jx7zq3#

使用键盘挂钩,您可以执行以下操作:

// release CTRL
INPUT input;
input.type = INPUT_KEYBOARD;
input.ki.wVk = VK_CONTROL;
input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &input, sizeof(input));

// double click in place
POINT client;
client.x = msStruct.pt.x;
client.y = msStruct.pt.y;
ScreenToClient(hWnd, &client);
const auto mouseLParam = MAKELPARAM(client.x, client.y);                            
SendMessage(hWnd, WM_LBUTTONDOWN, 0, mouseLParam);
SendMessage(hWnd, WM_LBUTTONUP, 0, mouseLParam);
SendMessage(hWnd, WM_LBUTTONDOWN, 0, mouseLParam);
SendMessage(hWnd, WM_LBUTTONUP, 0, mouseLParam);

// press CTRL
input.ki.dwFlags = 0;
SendInput(1, &input, sizeof(input));

我已经实现了上述功能,并将其作为一个免费的第三方开源应用程序提供:https://github.com/dougbenham/CtrlClick

lo8azlld

lo8azlld4#

更新为2022年。(剧透警告,它仍然不在这里)但有几个渔获物:
有人修改了源代码
我发现的唯一有希望的尝试是在github问题上修改vscode源代码以支持控件单击选择的尝试。

但是要真正测试这个,你需要能够构建vscode。在写这篇文章的时候,他的提交比最新的提交晚了10个月(10000次提交),他没有提供任何二进制构建,我自己也没有从源代码构建vscode,所以我不能测试这个。(npm和yarn不是我的领域)

指向此code commit的链接

现在关闭ctrl+click以进行后藤定义

虽然不是一个真正的解决方案,什么OP问。我决定包括在我的答案,因为其他答案还没有提到它。
现在,您可以关闭此Ctrl+Click功能,解决方法是将以下编辑器设置设置为“ctrlCmd”,这样它就不会干扰您的复制粘贴操作。x1c 0d1x

便笺背景(& B):

  • 请注意,我使用Visual Studio Keymap是因为我仍然使用VS进行主开发,不想失去我学到的快捷方式。
  • 此扩展已返回VS F12 = '转到定义'
  • 还有很多其他的方法,例如CTRL+D用于行复制。
  • 因此,这将从“转到定义”中释放CTRLClick,因为我已经有了F12。
  • 我还大量使用CTRLClick来选择“整个单词”,以及它的Ctrl-click-drag变体。
z9smfwbn

z9smfwbn5#

对于任何AutoHotkey用户,这里有一个脚本,将为您提供功能(但不是+拖动变体,不幸的是)。

#IfWinActive ahk_exe Code.exe
    ~^LButton:: Send {LButton up}{Ctrl up}{Click}^{Left}^+{Right}

您仍然需要按照Wappenull的说明将多光标修改器更改为“ctrlCmd”。
这样做的好处是可以对多个程序使用相同的脚本。

6yt4nkrj

6yt4nkrj6#

我是另一个回复中提到的源代码更改的作者。看来我的代码不会被合并,因为它已经超过一年了。
如果您想从源代码构建,可以在here中找到我的代码更改,但我也上传了为Windows编译的二进制文件,可以在Release选项卡中下载。
如果您构建自己的版本,则需要修改product.json以使扩展库按here所述工作。您还可以安装扩展Visual Studio Keymap以获得与Visual Studio类似的键绑定。
在Visual Studio代码中,您可以启用该功能或添加JSON属性:

"editor.wordSelection": true

相关问题