visual-studio - 如何在 Visual Studio 2017 中更改 Ctrl+C 以复制 Word,而不是整行

标签 visual-studio visual-studio-2017 visual-studio-2019

这个问题类似于Disabling single line copy in Visual Studio ,除了我想将其更改为仅复制光标所在的单词(如果未选择任何内容)。如果它在空白处,当然,我不在乎,复制该行,但 99% 我试图复制一个单词,而不是该行这可能吗?

最佳答案

要复制插入符号所在的单词,您可以为以下 Visual Commander 分配快捷方式(由我开发)命令(C#语言):

public class C : VisualCommanderExt.ICommand
{
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
    {
        this.DTE = DTE;
        EnvDTE.TextSelection ts = TryGetFocusedDocumentSelection();
        if (ts != null && ts.IsEmpty)
            CopyWord(ts);
        else if (IsCommandAvailable("Edit.Copy"))
            DTE.ExecuteCommand("Edit.Copy");
    }

    private void CopyWord(EnvDTE.TextSelection ts)
    {
        EnvDTE.EditPoint left = ts.ActivePoint.CreateEditPoint();
        left.WordLeft();

        EnvDTE.EditPoint right = ts.ActivePoint.CreateEditPoint();
        right.WordRight();

        System.Windows.Clipboard.SetText(left.GetText(right));
    }

    private EnvDTE.TextSelection TryGetFocusedDocumentSelection()
    {
        try
        {
            return DTE.ActiveWindow.Document.Selection as EnvDTE.TextSelection;
        }
        catch(System.Exception)
        {
        }
        return null;
    }

    private bool IsCommandAvailable(string commandName)
    {
        EnvDTE80.Commands2 commands = DTE.Commands as EnvDTE80.Commands2;
        if (commands == null)
            return false;
        EnvDTE.Command command = commands.Item(commandName, 0);
        if (command == null)
            return false;
        return command.IsAvailable;
    }

    private EnvDTE80.DTE2 DTE;
}

关于visual-studio - 如何在 Visual Studio 2017 中更改 Ctrl+C 以复制 Word,而不是整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55942005/

相关文章:

windows - 从 Visual Studio 2017 连接到适用于 Linux 的 Windows 子系统

qt - CMake 3.9现在可以在Visual Studio中创建“自动生成”项目吗?

xamarin.forms - 无法存档 Xamarin.Forms 应用程序

c++ - 带有类和 DLL 的外部 "C"

asp.net - 在 Visual Studio 中调试时无法识别属性 ‘targetframework’

visual-studio - Visual Studio - 突然无法调试测试

c++ - VS2019 C++ 未知覆盖说明符

visual-studio - 如何将 VS2019 更新到非最新版本?

asp.net - 将NUnit添加到ASP.NET MVC测试框架的选项中

c++ - Visual Studio LNK1104 而不是 LNK2019