《Visual Studio程序员箴言》---- 第2章 让编辑器的使用得心应手 2.1 高级编辑

简介: 纵观本书,您会看到我反复测试我最喜欢的功能。但我可以肯定地说,没有什么其他功能比编辑器更能让我想要拥有。编辑器是每个人一直都要使用的功能,我怎么会不想测试它并揭示它的秘密呢? 第1章重点讲述了适用于任意文件类型(甚至是纯文本文件)的基本编辑技巧。

本节书摘来自异步社区《Visual Studio程序员箴言》一书中的第2章,第1节,作者: 【美】Sara For,译者: 谢俊 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

第2章 让编辑器的使用得心应手

Visual Studio程序员箴言
纵观本书,您会看到我反复测试我最喜欢的功能。但我可以肯定地说,没有什么其他功能比编辑器更能让我想要拥有。编辑器是每个人一直都要使用的功能,我怎么会不想测试它并揭示它的秘密呢?

第1章重点讲述了适用于任意文件类型(甚至是纯文本文件)的基本编辑技巧。本章着重强调的是针对任意语言文件的基本编码技巧。在此,您将了解到关于Microsoft IntelliSense、大纲显示和代码段的技巧。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

2.1 高级编辑

Visual Studio程序员箴言
本节讲述了编码时应该知道的技巧。这些技巧包括选择代码的额外方式,注释代码的键盘快捷键,设置代码格式的快速途径等。

2.1.1 选择

除了标准的鼠标拖动之外,还有很多方法可以选择代码。

技巧2.1 使用编辑器中的块/列选择
编辑器提供了两种不同的选择模型:流和块。还有行选择,但这只会出现在Brief模拟中(参见技巧2.15,了解关于编辑器模拟的更多信息)。

流选择的方法是用Shift+方向键,这已经为所有人所熟知。但是块选择允许同时手动选择列和行。


6d510f6cb13b493382e31bc5b97bd594970c115d

只要按Shift+Alt+方向键,您很快就能体验到块选择的便捷。选择文本时,还可以在按住Alt键的情况下使用鼠标进行块选择。剪切、复制、粘贴等操作仍然有效,但要记住开始选择文本的位置。切记一定要完整地测试这项功能。

技巧2.2 按Esc键时跳转到所选文本的开始处
我希望这条技巧的标题准确地表达了它要表达的意思。意思是选择一些文本,然后按Esc键,此时您想让光标处于什么位置?


449537473f7e87ef971f03e30d5152885bbd05bf

如果想让光标位置保持不变,这就是默认的行为。但如果想让它跳转到所选文本的开始处(即选择定位点),可选择菜单“工具”→“选项”→“文本编辑器”→“常规”,然后选择“按Esc键后转到选择定位点”。

技巧2.3 使用Ctrl+=键选择从当前光标位置到最后一个返回标记之间的所有代码
参见技巧1.16,了解关于返回标记的更多信息。

用于选择从当前光标位置到最后一个返回标记之间所有代码的键盘快捷键是Ctrl+=,相应命令是编辑.选择退回到上一项。


8f45735f5b5faf062f5c6e71c66cc8e94b58e08e

在上图中,我把光标放到了Public Class1行的末尾,然后在大约往下7行的位置上单击鼠标左键,以便留下一个返回标记。然后我按Ctrl+=键选择到上一个返回标记的所有文本。

技巧2.4 在编辑器中交换当前的定位点位置
Ctrl+K、Ctrl+A键将交换当前的定位点位置。

作者旁述

为了测试Emacs模拟,我决定以Emacs模式编写我所有的测试用例(Emacs是一个类似于Visual Studio的文本编辑器。要了解相关细节,请参考Wikipedia文章http://e.wikipedia.org/wiki/Emacs 。)有趣的是,我过去似乎一直在交换定位点位置(在Emacs模式中使用正确的快捷键);但只要我不在Emacs模式中,我就绝不会这么做。我认为正是经过大学训练而形成的对于Emacs编辑体验的认知,才让我想要交换定位点位置。
交换前的光标位置。


fb9012ba9e2fc1c23dbbee702e529d32295a9c59

交换后的光标位置。


4414a34e8fdd394662fb32c4edc1a9e6e04f66cd

2.1.2 注释

现在您已经知道如何快速选择代码,所以可以通过键盘快捷键快速地注释或取消注释选定的行。

技巧2.5 使用键盘快捷键快速注释和取消注释代码
这真的很简单,不是吗?

使用Ctrl+K、Ctrl+C键注释代码,使用Ctrl+K、Ctrl+U键取消注释代码。所有默认的开发设置都将已将这些命令绑定到这些键盘快捷键上。

在“编辑”→“高级”菜单下可以找到这些命令,如下所示。


eb10126ca593ca6f37627a0830375aea7d75754b

2.1.3 设置格式

进行剪切和粘贴操作时可以进行更多控制,无论是从Web站点上剪切代码然后将其粘贴到编辑器中,还是粘贴到您最喜欢的博客编辑器中。本节内容讲述了针对特定语言,根据需要快速设置代码格式的多种方式。

技巧2.6 在编辑器中显示导引线以帮助您设置代码格式
作者旁述

在我的博客上,最受欢迎的技巧就是有关导引线的。我认为它如此受欢迎的原因是,它曾是我多年前推出的关于Microsoft Visual Studio的首批技巧之一。我在博客上发表的这篇文章曾让很多人对我表示感谢,但是当一位偶遇的开发人员在走廊上拦住我表示感谢,因为他编写了这个功能,这将走廊里的会话提升到了一个新的层面。在我写出这个技巧之前的很多年,他就已经转向Visual Studio的另一个领域了,所以他非常激动能看到他编写的功能获得了公众的注意。我认为对于任何开发人员,最困难的事情之一是让花时间写出的功能能够得到用户的认可。

重要

要启用分隔线功能,需要修改注册表设置。您必须清楚,使用导线所带来的风险全部由您自己承担,并且只有在您可熟练修改注册表的情况下才应该这样做。修改注册表后需要重新启动Visual Studio,修改才能生效。
访问注册表HKEY_CURRENT_USERSoftwareMicrosoftVisualStudioText Editor。

创建一个名为Guides的字符串值(RG_SZ)键。

键值的格式是RBG(x,y,z) n1,…,n13,其中的x,y,z是色值,而n是列数。最多能有13条导线。例如,RBG(255,0,0) 5,20将在第5列和第20列显示两条红色的导引线,如下图所示。


0cc39bf147c6dfc5850474c12ab1cde4395a749e

技巧2.7 设置文档、选定的文本或者只是当前行的格式
您是否遇到过曾经在编辑器内输入内容时,出于某些原因导致文本在行上没有像预想的那样正确缩进?此时无需在每行文本上手动按Backspace或Tab键,而只要按Ctrl+K、Ctrl+D键,这将执行设置文档的格式命令。

对于较大的文件,您可能只想选择没有正确对齐的区域,并使用Ctrl+K、Ctrl+F键。这个键盘快捷键可以在没有选择任何内容时,设置当前行的格式。

这些命令都可在“编辑”→“高级”菜单下找到。


fdac64dc72e35733e49009e902684b75b3f46ee4

技巧2.8 保留制表符或者插入空格
作者旁述

这条技巧和技巧2.9是我最不喜欢测试的功能。要弄清楚何时应该插入制表符,何时光标应该移动到正确的格式化位置,诸如此类的问题简直让我发疯。现在我在代码中只使用空格。
选择菜单“工具”→“选项”→“文本编辑器”→“<语言>”→“制表符”,可以在使用制表符和插入空格之间进行切换。


75a3a731a462123f443e281bf115606998ed92fd

注意,可以在“文本编辑器”→“所有语言”页面上针对所有语言设置这项功能,但用户一般只会针对每种单独的语言进行设置。

技巧2.9 将空格转换为制表符和将制表符转换为空格
涉及将空格转换为制表符和将制表符转换为空格的命令一共有4个。头两条命令可以在“编辑”→“高级”菜单下找到。

将选定行中的空格替换为制表符:将包含选定内容的行中的空格替换为制表符。
将选定行中的制表符替换为空格:将包含选定内容的行中的制表符替换为空格。


d393508e99eb19b9662a2a8e138515f4599116c0

注意

Microsoft Visual Basic不支持“编辑”→“高级”菜单下的这两条命令。
最后两条命令在“编辑”菜单下找不到,但可以通过绑定键盘快捷键,或者手动添加到“编辑”菜单或“文本编辑器”工具栏上进行使用。

编辑.将制表符转换为空格:将选定的制表符转换为空格。
编辑.将空格转换为制表符:将选定的空格转换为制表符。


e16ee0c6a624a6dc4b58984171d449cb2d04d2aa

注意,必须取消选中“工具”→“选项”→“文本编辑器”→“Basic”→“VB专用”→“整齐排列代码(重新格式化)”,才能使用“编辑.将制表符转换为空格”和“编辑.将空格转换为制表符”。

技巧2.10 从文本编辑器工具栏上增加或减少行缩进
作者旁述

此技巧不在我的“每日一贴”系列之内,但也有它的用武之地。


077d62333a8f6425663797eab3ca6b728002cedc

选定一行或多行时,可以使用“增加缩进”或“减少缩进”命令,这两条命令可以在文本编辑器工具栏或“编辑”→“高级”菜单下找到(但在菜单中它们分别称为“增加行缩进”和“减少行缩进”。

技巧2.11 智能缩进与块缩进之间有什么区别


9f9a204d836cfcac67635c4972f70382912c0523

假设想在代码中按Enter键或上下方向键时光标都能正确缩进,那么应选择智能缩进。例如,创建一个名为Method1()的新方法,然后按Enter键时。您会注意到光标本身自动进行了缩进。如果继续按Enter键,光标将会保持缩进。并非所有语言都支持这种智能缩进,但是如果您使用的语言支持,这应该是该语言的默认设置。

块缩进类似于文档编辑器。以Visual Basic为例,区别在于当您输入Method1()然后按Enter键时,只有第一个新行会自动缩进。接下来的新行将会把光标置于第0列。

选择“无”将不会缩进任何新行,此时必须手动缩进所有内容。

2.1.4 大纲显示

控制大纲显示,无论是想快速折叠或展开代码,还是完全删除代码时都应如此。

技巧2.12 折叠和展开代码
共有5条命令用于大纲切换,这些命令可以在“编辑”→“大纲显示”菜单下找到。

切换大纲显示展开


a056545b57d2912ff89009da2417aa6ded6ec7d8

在代码块内的任意位置按Ctrl+M、Ctrl+M键,便可在折叠指定代码块(如下图所示)。


156abc5938a9943045504d9a12280c9026e01149

和展开它之间切换(如下图所示)。


a9cabb656a0ce6dfeff009cf1e154e222bca05c0

切换所有大纲显示


ea93ff134f8096f4fe5d64262dcc4f9bd3f67f74

在编辑器内的任意位置按Ctrl+M、Ctrl+L键,便可在折叠和展开整个文件之间切换。

完全折叠后如下图所示。


befaa0bd7021ca6404456b2e565c666933ba170e

完全展开后:


d8a02e34294156d06574c5e5f9e5750f38d95b03

停止大纲显示


4c2cb5570fda7967ba3a5cc5801ec338b67b82b1

在编辑器内的任意位置按Ctrl+M、Ctrl+P键,即可关闭大纲显示。


408906f38e1d6933bcde964384ee0cf9abf42881

启动自动大纲显示


93ed0452d0fb91f8d95e77ec0a4e76e92899705f

不幸的是,启动和停止大纲显示并不是同一条命令,所以无法在一种状态和另一种状态之间进行切换。另外,使用常规开发设置时,启动大纲显示并未绑定有键盘快捷键。所以需要选择菜单“编辑”→“大纲显示”→“启动自动大纲显示”才能再次打开大纲显示。

折叠到定义


fd5bcb9ee3bb1b905dc6d54c5103e68e5029c32b

我认为“折叠到定义”是所有大纲显示命令中最有用的一个(主要原因在于它是我用过的唯一一个,除了我必须测试其他命令的时候)。使用这条命令可以快速查看所有函数。


214631b0d7e754c55bf7f9eb5c94fa567c6f0ecb

技巧2.13 剪切并粘贴一个折叠的代码块
作者旁述

您可以剪切并粘贴一个折叠起来的代码块,同时保持其中的代码不变。当然,这个功能可能就是您想要的,但我从未想过要去尝试使用。


157fba3a30f978bbdfed37f19db5b73a0e6cf455

将一个代码块折叠起来之后,代码行的右侧就会出现像上图所示的效果,此时选择这个代码块并剪切,或者以自己最喜欢的剪切行方式将这一行剪切,然后将光标移到目的位置并粘贴。


8f45ffaf1e92a12afa7ff09527a91160b1debf3f

注意,代码在粘贴的时候会自动展开。

这条技巧背后的思路是用户想要快速剪切并粘贴整个函数,但是函数很长。您可以使用前一条技巧中所讲的方法(就是使用Ctrl+M、Ctrl+M键在展开和折叠代码块之间切换)把函数折叠为仅显示函数名。然后按Ctrl+L键剪切当前行。现在您可以把函数粘贴到任何地方。

技巧2.14 在不关闭大纲显示的情况下隐藏大纲显示(选定内容的边距)
选择菜单“工具”→“选项”→“文本编辑器”→“常规”,然后取消选中“选定内容的边距”。尽管用于指示代码块的左边距不见了,但大纲显示仍然起作用。


fc93da58bce826badd6fa1952c41d261f0cbf709

2.1.5 模拟

有一次参加麻省大学的夏季研究计划时,我十分幸运,整个夏天里我每天都能使用GNU Emacs。我之所以使用“幸运”这个词,是因为5年后,我要努力回想关于Emacs我所知的一切,以便在Visual Studio中测试Emacs编辑器模拟。

我测试过的其他模拟还有Brief。对于Brief我以前并没有多少经验,所以我主动参加了一个速成课程。幸运的是,Visual Studio大楼里有人曾经用过Brief,他让我学会了很多东西,并帮我解决了不少问题。然而,这意味着我不得不学习三组不同的键盘快捷键!我决定轮流学习编辑器模拟,一周集中在Emacs上,下一周集中在Brief上,然后再花上健康检查的一周学习默认的编辑器。这让我的肌肉记忆变得十分混乱。

但是不要误会我的意思,测试编辑器模拟是测试人员找到很难发现的bug的天堂。现在我当程序经理也有一些年头了,通过让开发人员和程序经理清楚如何处理我找出的所有bug,我对于他们的做法了如指掌。但它仍然是一门乐事。

技巧2.15 启用Emacs和Brief编辑器模拟
在Visual Studio 2005中,我们在编辑器中引入了Emacs和Brief模拟。

访问菜单“工具”→“选项”→“环境”→“键盘”,然后打开“应用以下其他键盘映射方案”列表。然后选择Brief或Emacs。


3a03ff55f9c3180edcdea6102fb16d81abcd2ded

要返回到标准编辑器,只要选择“(默认值)”即可。

2.1.6 二进制编辑器

可以使用二进制编辑器编辑任何资源,只要您愿意以逐位的方式编辑它。是的,这个冷笑话完全是我自己想出来的。

技巧2.16 在二进制编辑器内打开内容
作者旁述

我首次在编辑器测试台中看到这个测试用例时,心里在想,“喔,我已经打开“打开文件”对话框一千遍了,以前怎么从未见过这个选项。”


d79b2844f6111f596caafc247b474b17c39088ed

要使用二进制编辑器,请执行以下步骤。

1.选择菜单“文件”→“打开文件”;

2.单击“打开”按钮上的下拉箭头,或者在键盘上按下方向键;

3.选择“二进制编辑器”,然后单击“确定”或“打开”(这取决于Visual Studio的版本)。


4d7702a6e5e35d5950b8ab192cdb0691ca56dec8

2.1.7 分隔符突出显示和大括号匹配

是否需要进行快速的可视检查,以确保代码行的正确对齐?如果是,可以使用“自动突出显示分隔符”和“大括号匹配”功能来提供可视化线索。

技巧2.17 “自动突出显示分隔符”选项的功能是什么
作者旁述

老实地讲,我不得不到处问人才知道这个选项的作用,我就是记不住。


799daa333ea53ddccd1bad8b6916b5526d9b7fa1

只要存在代码构造对(这是文档给它们取的名称),结束输入对的开始或结束部分时,两对单词都会变为粗体。要关闭这项功能,可选择菜单“工具”→“选项”→“文本编辑器”→“常规”,然后取消选中“自动突出显示分隔符”。


065c064033bc73ff8561207a7745807c57511b14

可以自定义变为粗体的颜色,方法是选择“工具”→“选项”→“环境”→“字体和颜色”,然后选择“大括号匹配(突出显示)”。


c725442656dea0711291ab2e6c20bef3202fc7bd

现在,#if和#endif变为粗体时显示为红色。


4f0bba6e7c26cb1913538da331b837af25e60220

技巧2.18 改变大括号匹配的颜色
可以修改大括号匹配的颜色,方法是选择菜单“工具”→“选项”→“环境”→“字体和颜色”,选择“括号匹配(方括号)”,然后将这个选项设为想要的颜色。


baef02a4c26c39921f005edc4637a4b92b875aea

现在大括号的匹配将会以新的突出显示颜色进行显示。


1a2ccec99c02d944e57a0ca4812f788acfb1af1a

作者旁述

我喜欢浅绿色,这肯定是因为西雅图长达9个月的灰蒙蒙的天气所导致的。

2.1.8 清理未使用的代码

C#提供几种用于控制using语句的有趣功能。

技巧2.19 移除未使用的using语句
C#中的选项可用于移除所有未使用的using语句。如果要反复使用某种类型的模板,此选项特别有用。不必注释掉每一行,编译,看编译是否成功,然后删除或者取消注释行,而只要打开编辑器上下文菜单(只要在编辑器内右键单击即可),然后选择“组织Using”→“移除未使用的Using”。这将为您完成所有困难的工作。


ffdeeec8f1ddf555e582ecf9faa6aa425189364d

2.1.9 自动恢复

Visual Studio提供自动恢复功能,可以在遭遇意外关机、电源故障等情况下避免损失,继续工作。

技巧2.20 在意外关机时Visual Studio自动恢复文件
作者旁述

测试小组的成员往往会跟负责测试自动恢复功能的测试人员开玩笑说,每次大楼里出现停电故障(由于飓风或其他类似原因),他就会站在处于关闭位置的红色大开关旁边,脸上露出一丝微笑,因为大楼里的每个人又能义务为他测试功能了。
选择菜单“工具”→“选项”→“环境”就可找到“自动恢复”页面。


c71cc52703ef511a62c6b786c94cf0e6b29487ec

注意,如果取消选中“保存自动恢复信息的时间间隔”复选框,就表示停止使用自动恢复功能。

页面余下部分的作用不言自明,但是您知道Visual Studio把这些自动恢复的文件保存在什么地方吗?它们的保存目录是My DocumentsVisual Studio<版本>Backup Files<项目名称>。


b69bae956f96ffe97f1bc6ce4defbf7aeeca9836

万一您从未见过自动恢复对话框(很有可能),下图就是。意外关机后,下次再运行Visual Studio时就会弹出此对话框。您可以选择使用备份文件还是忽略它们。


3ba6133189cd9876792a3a04927b22aad7a40d6a

2.1.10 文件扩展名

如果需要编辑使用不同文件扩展名的源代码文件,最好仍然能够使用语法突出显示功能。

技巧2.21 针对指定文件扩展名支持语法突出显示功能
在“工具”→“选项”→“文本编辑器”→“文件扩展名”页面上,可以将一种文件扩展名映射给一个已存在的编辑器。


c69290502fb7b232e4b12683196c464f0415beb2

将.sara扩展名映射给C#编辑器后,现在对于这种文件我们可实现语法突出显示。


96cf15068300bfb319d3d64a1ff73d460908ef5b

此外还有一个选项,用于将无扩展名的文件映射到特定编辑器。


603eac143781ae5a7be06f59b84085f5823ccfe5

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
4月前
|
数据可视化 Linux API
使用Docker安装部署Swagger Editor并远程访问编辑API文档
使用Docker安装部署Swagger Editor并远程访问编辑API文档
57 0
|
8月前
|
Shell Linux Apache
学习Nano编辑器:入门指南、安装步骤、基本操作和高级功能
学习Nano编辑器:入门指南、安装步骤、基本操作和高级功能
1081 0
|
12月前
|
存储 JSON iOS开发
Apple 的 plist 编辑器入门指南:基础操作与高级功能详解
PlistEdit Pro 是一款专为 macOS 编写的最高级属性列表 Plist 编辑器。对于 Mac 和 IOS 开发人员来说,编写应用程序时必须编辑各种列表文件。
|
10月前
|
前端开发 JavaScript
富文本编辑器wangEdiotr,编辑内容后,重新打开报错Uncaught (in promise) Error: Cannot find a descendant at path
富文本编辑器wangEdiotr,编辑内容后,重新打开报错Uncaught (in promise) Error: Cannot find a descendant at path
1158 0
|
12天前
|
前端开发 JavaScript 搜索推荐
react-app框架——使用monaco editor实现online编辑html代码编辑器
react-app框架——使用monaco editor实现online编辑html代码编辑器
28 3
|
2月前
|
Unix Shell Linux
【Shell 命令集合 文档编辑】Linux 文本编辑器 ex命令使用指南
【Shell 命令集合 文档编辑】Linux 文本编辑器 ex命令使用指南
35 0
|
2月前
|
存储 Shell Linux
【Shell 命令集合 文档编辑】Linux 行编辑器 ed命令使用指南
【Shell 命令集合 文档编辑】Linux 行编辑器 ed命令使用指南
30 0
|
5月前
|
定位技术
ArcGIS中各版本ArcMap安装OpenStreetMap编辑工具集插件ArcGIS Editor for OSM
ArcGIS中各版本ArcMap安装OpenStreetMap编辑工具集插件ArcGIS Editor for OSM
|
7月前
|
机器学习/深度学习 开发工具
帅气的代码编辑方式——Vim编辑器
帅气的代码编辑方式——Vim编辑器
|
7月前
|
Shell Linux 网络安全
git实战—Gerrit配置SSH key & 下载代码到本地 & 使用VScode编辑器编辑提交代码——2023.07
git实战—Gerrit配置SSH key & 下载代码到本地 & 使用VScode编辑器编辑提交代码——2023.07
336 0