当前位置: 首页 > news >正文

提高使用 Visual Studio 开发效率的键盘快捷键

Visual Studio 的功能可谓真是丰富,再配合各种各样神奇强大的插件,Visual Studio 作为太阳系最强大的 IDE 名副其实。

如果你能充分利用起 Visual Studio 启用这些功能的快捷键,那么效率也会很高。


本文内容

    • 建议记住
    • 万能重构
    • 转到所有
    • 重构
      • 重命名
      • 其他
    • IntelliSense 自动完成列表
      • 智能感知
      • 参数信息
    • 编写
      • 代码格式化
      • 其他
    • 导航
    • 书签
    • 显示

建议记住

功能快捷键建议修改成
重构Ctrl + .Alt + Enter
转到所有Ctrl + ,Ctrl + N
重命名F2
打开智能感知列表Ctrl + JAlt + 右
注释Ctrl + K, Ctrl + C
取消注释Ctrl + K, Ctrl + U
保存全部文档Ctrl + K, S
折叠成大纲Ctrl + M, Ctrl + O
展开所有大纲Ctrl + M, Ctrl + P
加入书签Ctrl + K, Ctrl + K
上一书签Ctrl + K, Ctrl + P
下一书签Ctrl + K, Ctrl + N
切换自动换行Alt + Z

万能重构

你可以不记住本文的其他任何快捷键,但这个你一定要记住,那就是:

Ctrl + .

当然,因为中文输入法会占用这个快捷键,所以我更喜欢将这个快捷键修改一下,改成:

Alt + Enter

修改方法可以参见:如何快速自定义 Visual Studio 中部分功能的快捷键。

它的功能是“快速操作和重构”。你几乎可以在任何代码上使用这个快捷键来快速修改你的代码。

比如修改命名空间:

修改命名空间

比如提取常量或变量:

提取常量

比如添加参数判空代码:

参数判空

还有更多功能都可以使用此快捷键。而且因为 Roslyn 优秀的 API,有更多扩展可以使用此快捷键生效,详见:基于 Roslyn 同时为 Visual Studio 插件和 NuGet 包开发 .NET/C# 源代码分析器 Analyzer 和修改器 CodeFixProvider。

转到所有

不能每次都去解决方案里面一个个找文件,对吧!所以一个快速搜索文件和符号的快捷键也是非常能够提升效率的。

Ctrl + , 转到所有(go to all)

不过我建议将其改成:

Ctrl + N 这是 ReSharper 默认的转到所有(Goto Everything)的快捷键

这可以帮助你快速找到整个解决方案中的所有文件或符号,看下图:

转到所有

修改方法可以参见:如何快速自定义 Visual Studio 中部分功能的快捷键,下图是此功能的命令名称 编辑.转到所有Edit.GoToAll):

编辑.转到所有

有一些小技巧:

  • 你可以无需拼写完整个单词就找到你想要的符号
    • 例如输入 mw 就可以找到 MainWindow
  • 对于两个以上单词拼成的符号,建议将每个单词的首字母输入成大写,这样可以提高目标优先级,更容易找到
    • 例如 PrivateTokenManager,如果希望干扰少一些,建议输入 PTM 而不是 ptm;当然想要更少的干扰,可以打更多的字母,例如 priToM 等等

注意到上面的界面里面右上角有一些过滤器吗?这些过滤器有单独的快捷键。这样就直接搜索特定类型的符号,而不是所有了,可以提高查找效率。

Ctrl + O 查找当前文件中的所有成员(只搜一个文件,这可以大大提高命中率)
Ctrl + T 转到符号(只搜类型名称、成员名称)
Ctrl + G 查找当前文件的行号(比如你在代码审查中看到一行有问题的代码,得知行号,可以迅速跳转到这一行)

重构

重命名

F2

重命名

如果你在一个标识符上直接重新输入改了名字,也可以通过 Ctrl + . 或者 Alt + Enter 完成重命名。

其他

这些都可以被最上面的 Ctrl + . 或者 Alt + Enter 替代,因此都可以忘记。

Ctrl + R, Ctrl + E 封装字段
Ctrl + R, Ctrl + I 提取接口
Ctrl + R, Ctrl + V 删除参数
Ctrl + R, Ctrl + O 重新排列参数

IntelliSense 自动完成列表

智能感知

IntelliSense 以前有个漂亮的中文名字,叫做“智能感知”,不过现在大多数的翻译已经与以前的另一个平淡无奇的功能结合到了一起,叫做“自动完成列表”。Visual Studio 默认只会让智能感知列表发挥非常少量的功能,如果你不进行一些配置,使用起来会“要什么没什么”,想显示却不显示。

请通过另一篇博客中的内容把 Visual Studio 的智能感知列表功能好好配置一下,然后我们才可以再次感受到它的强大(记得要翻到最后哦):

  • 通过设置启用 Visual Studio 默认关闭的大量强大的功能提升开发效率

如果还有一些时机没有打开智能感知列表,可以配置一个快捷键打开它,我这边配置的快捷键是 Alt + 右

设置打开智能感知的快捷键

参数信息

Ctrl + Shift + 空格

显示方法的参数信息。

显示参数信息

默认在输入参数的时候就已经会显示了;如果错过了,可以在输入 , 的时候继续出现;如果还错过了,可以使用此快捷键出现。

编写

代码格式化

Ctrl + K, Ctrl + E 全文代码清理(包含全文代码格式化以及其他功能)
Shift + Alt + F 全文代码格式化
Ctrl + K, Ctrl + F 格式化选定的代码

关于代码清理,你可以配置做哪些事情:

配置代码清理

配置代码清理

其他

Ctrl + K, Ctrl + / 将当前行注释或取消注释
Ctrl + K, Ctrl + C 将选中的代码注释掉
Ctrl + K, Ctrl + UCtrl + Shift + / 将选定的内容取消注释

Ctrl + U 将当前选中的所有文字转换为小写(请记得配合 F2 重命名功能使用避免编译不通过)
Ctrl + ] 增加行缩进
Ctrl + [ 减少行缩进

Ctrl + S 保存文档
Ctrl + K, S 保存全部文档(注意按键,是按下 Ctrl + K 之后所有按键松开,然后单按一个 S

导航

Ctrl + F 打开搜索面板开始强大的搜索功能
Ctrl + H 打开替换面板,或展开搜索面板为替换面板
Ctrl + I 渐进式搜索(就像 Ctrl + F 一样,不过不会抢焦点,搜索完按回车键即完成搜索,适合键盘党操作)
Ctrl + Shift + F 打开搜索窗口(与 Ctrl + F 虽然功能重合,但两者互不影响,意味着你可以充分这两套搜索来执行两套不同的搜索配置)
Ctrl + Shift + H 打开替换窗口(与 Ctrl + H 虽然功能重合,但两者互不影响,意味着你可以充分这两套替换来执行两套不同的替换配置)
Alt + 下 在当前文件中,将光标定位到下一个方法
Alt + 上 在当前文件中,将光标定位到上一个方法

Ctrl + M, Ctrl + M 将光标当前所在的类/方法切换大纲的展开或折叠
Ctrl + M, Ctrl + L 将全文切换大纲的展开或折叠(如果当前有任何大纲折叠了则全部展开,否则全部折叠)
Ctrl + M, Ctrl + P 将全文的大纲全部展开
Ctrl + M, Ctrl + U 将光标当前所在的类/方法大纲展开
Ctrl + M, Ctrl + O 将全文的大纲都折叠到定义那一层

Ctrl + D 查找下一个相同的标识符,然后放一个新的脱字号(或者称作输入光标)(多次点按可以在相同字符串上出很多光标,可以一起编辑,如下图)
Ctrl + Insert 查找所有相同的标识符,然后全部放置脱字号(如下图)

多个脱字号

脱字号 是 Visual Studio 中对于输入光标的称呼,对应英文的 Caret。

书签

Ctrl + K, Ctrl + K 为当前行加入到书签或从书签中删除
Ctrl + K, Ctrl + P 切换到上一个书签
Ctrl + K, Ctrl + N 切换到下一个书签
Ctrl + K, Ctrl + L 删除所有书签(会有对话框提示的,不怕误按)

如果配合书签面板,那么可以在调查问题的时候很方便在找到的各种关键代码处跳转,避免每次都寻找。

配合书签面板

另外,还有个任务列表,跟书签列表差不多的功能:

Ctrl + K, Ctrl + H 将当前代码加入到任务列表中或者从列表中删除(效果类似编写 // TODO

任务列表

显示

Ctrl + R, Ctrl + W 显示空白字符
Alt + Z 切换自动换行和单行模式

显示空白字符


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • WPF 不要给 Window 类设置变换矩阵(分析篇):System.InvalidOperationException: 转换不可逆。
  • WPF 不要给 Window 类设置变换矩阵(应用篇)
  • git fetch 失败,因为 unable to resolve reference 'refs/remotes/origin/xxx': reference broken
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • 发现电脑屏幕总是不自动关闭?看看你是否打开了这些程序……
  • 临时编写和调试 C++ 代码?用 VSCode 就够了!一分钟搭好 C++ 调试环境
  • WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True)
  • 在 WPF 中获取一个依赖对象的所有依赖项属性
  • 如何在 WPF 中获取所有已经显式赋过值的依赖项属性
  • .NET 设计一套高性能的弱事件机制
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • WPF 程序如何跨窗口/跨进程设置控件焦点
  • 使用 SetParent 制作父子窗口的时候,如何设置子窗口的窗口样式以避免抢走父窗口的焦点
  • WPF 程序如何移动焦点到其他控件
  • 深入了解以太坊
  • bootstrap创建登录注册页面
  • Computed property XXX was assigned to but it has no setter
  • Git的一些常用操作
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JSDuck 与 AngularJS 融合技巧
  • JS变量作用域
  • js操作时间(持续更新)
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • nodejs:开发并发布一个nodejs包
  • SpringBoot几种定时任务的实现方式
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 多线程 start 和 run 方法到底有什么区别?
  • 计算机常识 - 收藏集 - 掘金
  • 简单基于spring的redis配置(单机和集群模式)
  • 利用jquery编写加法运算验证码
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 人脸识别最新开发经验demo
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 原生 js 实现移动端 Touch 滑动反弹
  • 终端用户监控:真实用户监控还是模拟监控?
  • 2017年360最后一道编程题
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #控制台大学课堂点名问题_课堂随机点名
  • #每天一道面试题# 什么是MySQL的回表查询
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (6)STL算法之转换
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十六)Flask之蓝图
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)ORM
  • (状压dp)uva 10817 Headmaster's Headache