[译] 如何更快地编写代码--VS Code 版

原文地址:dev.to/kinginit/ho...

原文作者:Thomas King

原文发布于:2023 年 11 月 24 日

结对编程可以提高工作效率。但是,没有什么比看到你的程序员同伴在编码中苦苦挣扎更令人讨厌的了。说到 "挣扎",我并不一定是指他缺乏经验,而是指他的编码速度太慢。这种感觉就像《疯狂动物城》(Zootopia,一部不可错过的电影)中闪电的那一幕。

如何可以不做闪电?这里有一些在 Visual Studio Code (VS Code) 中编码的技巧和窍门。

注意:我没有 Mac,因此这里提到的短键仅适用于 Windows。你可以在这里找到 Mac 版的翻译,但由于我无法在实体 Mac 上重现它们,所以没有将它们包含在本指南中。

更智能地复制和粘贴

我见过有人通过以下方式复制粘贴代码:

  1. 将鼠标光标移至单词开头。
  2. 按住左键。
  3. 一直拖到单词的末尾。
  4. 松开左键。
  5. 右键单击所选内容。
  6. 点击 "复制"。
  7. 在 VS Code 的文件资源管理器中滚动,找到目标文件。
  8. 单击目标文件。
  9. 将光标移至文件中需要的位置。
  10. 将光标移至文件中需要的位置。
  11. 右键单击目标文件。
  12. 单击 "粘贴"。

这个过程有点慢。尤其是当您需要多次使用时...改进复制粘贴的一些方法有:

  • 使用 CTRL + C 复制 ,使用 CTRL + V 粘贴
  • 使用 CTRL + SHIFT + 左/右箭头 按单词增加/减少字数选择
  • 使用 SHIFT + 左/右箭头 按字符增加/减少选择
  • 在 VS Code 中单击一行代码并按下 CTRL + X 键,将把该行代码放入剪贴板(剪切) 。在任何地方使用 CTRL + V 都会插入该行代码
  • 使用 ALT + 上/下箭头 可以将一行代码上移/下移

更智能地导航

使用组合键 CTRL + P 代替手动浏览资源管理器窗格。这样,你就可以按名称搜索文件。这是一种 "智能"搜索,也就是说,它不仅会查找包含搜索文本的单词,还会查找组合词,例如, prodetcon 也会查找 project-details-container.component.ts 。使用 CTRL + P 要比看别人在文件资源管理器窗格中苦苦寻找要快得多,后者本身就是一种痛苦(双关语)。

与其在文件中滚动查找某些代码,不如使用这些组合键:

  • CTRL + G:转到行
  • CTRL + F:在文件中搜索(使用 ENTER 键导航到下一个出现的位置)
  • CTRL + 点击类/函数/等:转到所述类/函数/等的定义。

使用 CTRL + TAB 在上次打开的文件和当前文件之间切换(或继续按 TAB 进一步切换到其他已打开的文件)。这比将光标移动到任务栏,寻找正确的选项卡并单击打开要快得多。

注意:在 VS Code 中,使用这招在打开的文件之间切换是非常有效的。此外,在 Windows 中也可使用 ALT + TAB 在打开的窗口之间切换。


更智能地重新命名

不要在变量的每一个出现的地方去进行重命名。这样做既费时又容易出错。相反,请转到该变量的定义并按下 F2 键,重命名该变量,然后按下 ENTER 键。这将改变每次出现的变量。这不仅适用于变量,也适用于函数、类、接口等。这也会跨文件生效。


使用 Emmet

Emmet 是一款内容/代码辅助工具,用于更快、更高效地编写代码。它成为了 VS Code 的标准配置,因此无需额外安装任何插件。其概念很简单:开始键入一个 Emmet 缩写,按下 TABENTER 键,就会出现该缩写的完整 Emmet 代码段。

举个例子,键入 Emmet 缩写 .grid>.col*3 。当您按下 TABENTER 时,VS Code 会为您生成整段代码:

Emmet 最酷的一点是,您还可以生成"乱数假文"。例如, ul>li*4>lorem4 将生成一个包含 4 个元素的无序列表,每个列表项包含 4 个随机单词。


使用格式化器

在 VS Code 中使用代码格式器来格式化代码。我强烈推荐使用 Prettier

使用代码格式化工具的好处之一是,它还能"美化"你的代码。因此,如果你从没有格式的地方复制粘贴代码,你可以点击格式组合键(CTRL + ALT + F),然后你的代码就被"美化"了,更重要的是,它还具有可读性。

注意:保存时应用格式化是个好建议。您可以在设置中进行更改(查找配置中的"Format on save")。

格式化不仅对你自己有用,对整个团队也很有用,因为它能使团队的代码更加一致。想了解更多相关信息,请参阅我的另一篇文章《在 Angular 项目中执行前端指南》。


使用代码片段

代码片段是一种模板,可让您更轻松地编写重复的代码片段,如 for 循环、while 语句等。

通过使用代码片段,只需输入最基本的内容,就能轻松创建代码块。您可以使用内置的代码片段,也可以使用提供代码片段的扩展,甚至还可以创建自己的片段!

内置语法片段支持提供了许多语言的模板,如 TypeScript、JavaScript、HTML、CSS 等。例如,您可以使用它轻松创建 switch 语句,如上图所示。

VS Code 插件市场有多个扩展,可为您提供代码片段。例如 Angular snippetsTailwind UI snippetsBootstrap snippets 等。

最后,您还可以创建自己的片段。你既可以为特定语言创建全局片段,也可以为某个项目创建特定片段。在此我就不详细介绍了,不过您可以查看文档,了解如何创建自己的代码片段


利用"量子键入"

我把它称为 "量子键入",因为这确实加快了在 VS Code 中键入代码的速度。这一切都与多行选择有关。当你需要更改或添加文本到多行时,VS Code 允许你通过选择这些行并同时开始键入这些行来实现。

按住 SHIFT + ALT,拖动光标对多行进行选择。你会看到这些行上出现多个打字光标。只需开始键入,文本就会同时添加。

如果您想在多个位置添加相同的文本,但它们不对齐,您可以按住 ALT 不放,同时单击要输入相同文本的所有位置。

您还可以按住 ALT 键,同时选择多个单词。在按住 ALT 键的同时,您只需拖动以选择一个位置,然后释放左键或双击以选择单个单词,而无需单击某个位置。


快速环绕选择

代码经常需要用方括号、圆括号或大括号包围。或者某些内容需要用引号(单引号或双引号)包围。要做到这一点,人们通常会移至起始位置,键入起始括号,然后将光标移至结束位置,键入结束括号。

更有效的方法是先选择需要被包围的部分,然后直接键入起始括号。VS Code 会很聪明地知道需要包围整个部分。

对这些起始括号生效: ({[<'、和"


利用 VS Code 的代码重构功能

您可以使用 VS Code 自动重构代码片段。例如,您可以让 VS Code 为您生成 getters 和 setters,而不是自己编写。

要重构某些内容,只需选中需要重构的内容,单击右键,然后点击 Refactor... 或更快:使用 CTRL + SHIFT + R

VS Code 可以根据您所在的文件类型提供不同重构。例如,对于 TypeScript,您可以使用 Extract functionExtract constantGenerate get and set accessors。点击此处查看 TypeScript 的完整列表。


使用正则进行搜索和替换

正则表达式(RegEx)是开发人员工具包中一个非常强大的工具,值得您进一步熟悉。您不仅可以在自己的代码中使用它(如验证模式、字符串替换等),还可以在 VS Code 中使用它进行高级搜索和替换。

例子

您所在的项目中,某些 CSS 选择器以 app- 开始,以 -container 结束。你需要根据新的样式规范进行重命名,他们希望您将后缀 -container 更改为 -wrapper 。您可以尝试进行简单的搜索和替换,查找 -container 并将其替换为 -wrapper ,但是当您进行替换时,您会发现某些不应该被替换的选择符被替换了(例如,名为 .unit-container-highlight 的 CSS 选择符变成了 .unit-wrapper-highlight)。

使用正则,我们可以进行更精细的搜索。使用捕获组,我们可以提取想要保留的单词,同时替换其余的单词。例如使用正则表达式 app-([a-z-]+)-container。我们要替换那些以 -wrapper 结尾的匹配结果。替换后的字符串将显示为 app-$1-wrapper。请确保您勾选了 Use Regular Expression

注意:尽管使用正则允许更精细的搜索,但在进行实际替换之前,请检查搜索窗格中的结果!

通过允许只对某些文件进行搜索,您可以获得更多控制权。例如,只搜索 HTML 文件(*.html),甚至只搜索整个文件夹(src/app/modules)。

如果您想在搜索前试用正则表达式,以确定它是正确的,请使用在线正则测试器,如 Regex101。如果您没有或几乎没有使用正则的经验,可以看看 regexlearn.com/


使用工具将单调的工作自动化

有时,我们不得不做一些单调的工作,比如创建模拟数据、为类中的每个字段创建一个函数、根据接口的属性创建 HTML 列表项,等等。俗话说得好

更聪明地工作,而不是更努力地工作!

使用工具将这类单调的工作自动化,而不是自己完成所有繁琐的工作。我经常使用的工具有:

  • NimbleText:根据给定格式将输入行转换为特定输出。
  • Mockaroo:生成模拟数据并以多种格式(JSON、CSV、XML 等)输出。
  • JSON Generator:也能生成模拟数据,但专门针对 JSON。它比较复杂,但可以实现量身定制的结果。

使用 NimbleText 的一个很好的例子就是根据几个字段在 HTML 中创建整个表单。我们有一个字段列表,希望在表单中显示这些字段。每个字段都有一个标签和一个输入。让我们创建一些数据供 NimbleText 转换:

arduino 复制代码
first name, text
last name, text
email, email
street, text
number, number
city, text
postal code, text

这里有 7 行 2 列。每一行代表一个表单字段。第一列是标签名称,第二列是 HTML 输入类型。

在 NimbleText 中,我们确保 data 的设置为:列分隔符 , 和行分隔符 \n

每个表单字段都应位于类 .form-fielddiv 中,包含一个包含文本的 label 和一个用于表单字段的 input 。在 NimbleText 的 pattern 填入如下内容:

bash 复制代码
<div class="form-field">
  <label for="<% $0.toCamelCase() %>"><% $0.toSentenceCase() %>:</label>
  <input id="<% $0.toCamelCase() %>" type="$1"/>
</div>

当我们看到输出结果时,就会发现已经为我们做了很多工作:

html 复制代码
<div class="form-field">
  <label for="firstName">First name:</label>
  <input id="firstName" type="text"/>
</div>
<div class="form-field">
  <label for="lastName">Last name:</label>
  <input id="lastName" type="text"/>
</div>
<div class="form-field">
  <label for="email">Email:</label>
  <input id="email" type="email"/>
</div>
<div class="form-field">
  <label for="street">Street:</label>
  <input id="street" type="text"/>
</div>
<div class="form-field">
  <label for="number">Number:</label>
  <input id="number" type="number"/>
</div>
<div class="form-field">
  <label for="city">City:</label>
  <input id="city" type="text"/>
</div>
<div class="form-field">
  <label for="postalCode">Postal code:</label>
  <input id="postalCode" type="text"/>
</div>

因此,请发挥创意,尽情使用这些工具。


结论

要在 VS Code 中更快地编码,归根结底是要了解自己的快捷键,并充分利用集成开发环境的强大功能。下面是所提到内容的快速汇总:

  1. 使用短键进行复制粘贴。
  2. 用搜索代替手动导航,提高导航效率。
  3. 使用 F2 重命名,而不是手动重命名。
  4. 使用 Emmet。
  5. 使用格式化工具来整齐地列出大纲(还有其他优点)。
  6. 使用代码片段。
  7. 量子键入,就像没有明天一样。
  8. 使用 VS 代码重构。
  9. 使用 RegEx 进行搜索和替换。
  10. 使用 NimbleText 等工具自动处理单调的工作。

希望你喜欢阅读这篇文章。如果您认识的人在编码方面需要帮助,请随时分享这篇文章!

如果您有任何问题,请随时联系我们!谢谢!

相关推荐
森叶42 分钟前
利用本地 Express Web 服务解决复杂的 Electron 通信链路的问题
前端·electron·express
冴羽1 小时前
SvelteKit 最新中文文档教程(18)—— 浅层路由和 Packaging
前端·javascript·svelte
海风极客1 小时前
怎样读懂top命令?
linux·后端·程序员
哀木2 小时前
聊聊前端埋点 clarity:我会一直视监你... 永远...
前端
墨渊君2 小时前
Expo 入门指南:让 React Native 开发更轻松(含环境搭建)
前端·javascript·react native
xnian_2 小时前
策略模式实际用处,改吧改吧直接用,两种方式
java·服务器·前端
31535669132 小时前
一文带你了解二维码扫码的全部用途
前端·后端
七月shi人2 小时前
用claude3.7,不到1天写了一个工具小程序(11个工具6个游戏)
前端·小程序·ai编程
Billy Qin2 小时前
Rollup详解
前端·javascript·rollup
夜寒花碎3 小时前
前端自动化测试一jest基础使用
前端·单元测试·jest