Vim C++ – 大有可为!(C++ Vim 使用技巧)

Vim C++ – 大有可为!(C++ Vim 使用技巧)_第1张图片

什么是 Vim?

Vim 是一种成熟且可以高效编辑代码的知名文本编辑器。它常被称为“程序员的编辑器”,但实际上可用于各种文本编辑。无论是编辑脚本、配置文件、电子邮件,还是 C++ 文件,都可以高度自定义,以极其简单的方式进行配置。本文里,我们要讲的是 Vim C++。

Vim 作为文字处理器,并不像 Microsoft Word 那样具有丰富的功能;作为 IDE,也不像 2021 年 C++ IDE 排行榜中所列的产品那样,经过充分训练发展成为一款成熟的产品。但是,它的功能非常强大,且应用也很广泛,值得我们讨论它在 C++ 中的编码能力。

为什么使用 Vim C++?

Vim C++ 是一种功能强大的轻量级编辑器,消耗的资源比Visual Studio 等 IDE 更少。与传统 IDE 相比,它的显著优势就是速度。在熟悉 Vim C++ 的热键和基于键盘的交互后,可以高效处理文本,效率与目前的文本编辑器相当甚至更高。每个动作都有对应的快捷键组合,熟练用户可以快速执行搜索、替换等功能。用户还可以进一步扩展,通过创建关键映射,以最小的输入执行复杂的命令。

Vim 在程序员中很受欢迎,因为它可以在编写代码或编辑脚本时,实现语法高亮显示。此外,它支持多种编程语言,可以使用强大的插件系统进行自定义配置。例如,C++ 的插件种类繁多,支持语法检查、自动代码完成和调试等。所以,我们选择了 Vim C++!

为什么不使用 Vim C++?

即便 Vim 拥有无可争议的速度优势,且通过插件支持大量功能,但它仍然不适合所有人。其中的一个主要原因就是 Vim 的学习曲线很陡峭。就算是 Windows 环境中的 GUI 版本 gVim,由于编辑方式不同,Windows 用户也感觉很陌生。一个常见的笑话是,初学者甚至需要翻看教程,才能退出编辑器!

外行提示
:如果当前处于正常编辑模式,按“:wq”可以保存文件并退出,按“:q!”则为不保存文件立即退出。需要的命令很多,不过掌握了这两个命令,至少你可以退出应用程序。为什么是 colon?因为 Vim 命令都是从 colon 开始的。

Vim C++ 观感

Vim 通过输入命令进行操作,即使正在运行 gVim,键盘命令仍然可以使用。事实上,熟悉 Vim 的人即使在使用 GUI 时也会输入命令,因为在某些情况下,这样更快。

在下面的界面中,用户输入了“:q”命令退出编辑器。
Vim C++ – 大有可为!(C++ Vim 使用技巧)_第2张图片
图1:用户输入“:q” 后的 gVim 引导界面

Vim 的新用户经常会问:“每行左边的 ~ 字符是什么?”在 Vim 中,波浪符 (~) 表示一行空白行。如果没有波浪符而该行空白,那么就存在换行符、空格、标签或其他不可打印的符号。实质上,波浪符代表一行不存在的行,而不是一行空行。

教程和学习

虽然 Vim C++ 确实需要学习过程,但大多数用户都认为入门很简单。此外还有 vimtutor 内置教程,通常随 Vim 一起安装。

Vim C++ – 大有可为!(C++ Vim 使用技巧)_第3张图片图 2:vimtutor 是一个单独的命令,也是初学者的良好起点

除了 vimtutor,网上还有大量文字和视频格式的教程和使用指南。任何对学习 Vim C++ 感兴趣的人都可以轻松找到各种学习小贴士和技巧。

C++ Vim 使用技巧

利用这个高度自定义的编辑器,你可以有多种方法完成任务。为了帮助你开始学习,我们挑选了几个小贴士和技巧,为 C++ 高手们指引方向。

主题

Vim C++ 中的一种主题就是颜色方案,就是一个颜色集,用于区分控件,分隔源代码段,以及高亮显示界面的其他方面。Vim 预装了几个主题,GitHub 上还有更多主题可用。点击此处,查看最受欢迎的 Vim 颜色方案列表。

你可以在 Vim 中输入简单的命令,尝试配置新的颜色方案。例如,C++ 代码段的默认颜色方案如下:

Vim C++ – 大有可为!(C++ Vim 使用技巧)_第4张图片

图 3:Vim C++ 中的默认颜色方案

应用:
colorsceme
命令,你可以更改颜色方案,让 C++源代码变得更清晰。例如,更改为内置的“沙漠”主题:

:colorscheme desert

Vim C++ – 大有可为!(C++ Vim 使用技巧)_第5张图片
图 4:Vim C++ 中的沙漠主题颜色方案

目前有两种方法可以获取所有已安装颜色方案的列表,具体如下:

:colorscheme 列出你可以选择的颜色方案
:colorscheme 显示这些方案的文本列表

大多数编辑器都支持选择适合的颜色方案,而这种功能很常见,因为大多数人都想要。可读性高不仅可以提高代码效率,同时还有助于进行关键代码审查。编码易于阅读,才易于审查。

自动代码完成

部分编程环境,如Visual Studio IDE,支持自动代码完成功能,可用于加快编码进程,降低出错率。智能代码完成对上下文敏感,拥有轻松访问类成员函数和变量的方法。它能给出实时建议,在许多情况下,都能加快编程速度,因为不再需要记忆具体的类函数等细节。

下例来自 Visual Studio,输入“>”完成指针引用后,会显示可以访问的类变量列表。

Vim C++ – 大有可为!(C++ Vim 使用技巧)_第6张图片
图 5:Visual Studio 与 Vim C++ 之间利用 YouCompleteMe 实现自动代码完成的对比示例

Vim 拥有多种可实现 C++ 自动代码完成功能的扩展。其中三个比较受欢迎的有 YouCompleteMe、Clang complete 和 OmniCppComplete。这些扩展包含有关安装和使用的文档,已被数千人使用,以提高编码效率。

实时语法检查

Syntastic Vim C++ 扩展是一种实时语法检查器,可以扫描文件并向用户显示错误。程序员在编译代码前,使用语法检查器查找明显的错误,可以节省时间,通常还能提高编程效率。在某些情况下,语法检查器甚至会指出编译成功但无法正常运行的问题。

Vim C++ – 大有可为!(C++ Vim 使用技巧)_第7张图片
图 6:Syntastic 示例 (https://github.com/vim-syntastic/syntastic/raw/master/_assets/screenshot_1.png )

源文件与头文件之间的切换

C++ 程序员通常在单个项目的多个文件中工作,即便代码库很小,但总需要读取 C++(.cpp)文件和 头(.h,.hpp)文件。在 Vim C++ 中,如果主源文件和头文件都可用,那么二者之间切换会像窗口切换一样简单。但是,如果打开的不同文本或代码窗口过多,那么可能也很痛苦。

两种用于辅助切换的扩展是:Alternate Files quickly(有时称为 A)和 FSwitch。

其它有趣的相关扩展

除了上述扩展,还有无数其它扩展,可用于微调或改善 Vim C++ 编码体验。部分示例如下所示:

  • Snippet:它们是经常使用的小块代码,用于保证具有对应这些小块代码的快捷键。Vim C++ 中有两种Snippet:UltiSnips 和 snipMate。下例中,用户输入“if”,然后按下由 UltiSnips 识别的 TAB键。编辑器会自动完成 if() 块输入,并将光标悬停在括号内,便于用户在正确位置继续输入“if”逻辑。

Vim C++ – 大有可为!(C++ Vim 使用技巧)_第8张图片
图 7:UltiSnips 示例:输入“if”,然后按 tab,自动构建 if() 块,并定位光标

  • 重构工具:如果你要在不改变功能的前提下,进行标准化处理,请尝试 vim-refactor 或 Refactor。
  • 使用 Ctags 可以跳转到具体定义。
  • 引号、小括号、中括号和大括号匹配符合 delimitMate 中的其他有用功能。
  • 如果你想尝试图形调试器,请安装 vimspector

要想在单个扩展中获得更全面的功能,请尝试使用 lh-cpp。该扩展包括用于括号对和控制语句的智能 snippet、多种模板、语法高亮显示,以及用于构建向导和更复杂功能的 API。

这些只是对诸多可用扩展的简单举例,许多扩展都各有亮点,可以帮助程序员工作更便捷、更轻松。最好的办法就是尝试一下,看它是否适合你的风格!

我可以从哪里获取 Vim?

你可以在 Vim 的产品下载页面上免费获取适用于各种平台的 Vim,下载当前版本和多种历史版本。不想安装应用程序的 Windows 用户,也可以在 PortableApps gVim 页面运行便携式版本。对于 Unix 系统,开发人员建议直接从源头开始编译。Git 用户可以从 GitHub 下载最新版本,如果需要,还可以下载 Mercurial 存储库(点击此处,了解有关 Mercurial 与 Git 之间对比的信息)。

Mac 上预装有 Vim 终端版本,不过该版本的功能落后于当前版本。Mac 用户中较受欢迎的是基于 GUI 开发的版本——MacVim。

Vim 和 Visual Studio

如果开发人员已经能够熟练使用 Vim,同时正在与使用 Visual Studio 的团队合作,那么他们可以从 Visual Studio Marketplace 中下载名为 VsVim 的扩展。

结论

Vim C++ 是一种功能强大的文本编辑器,在系统管理员和程序员中很受欢迎。虽然它并非功能齐全的文字处理器,也不是完整的用于代码开发的 IDE,但它的速度快、性能好,这足以弥补它的缺点。用户熟练掌握基于键盘的输入后,可以高效处理文本。此外,通过强大的插件系统使用 C++ 等编程语言,可以实现许多特殊功能。开头可能有点难,但网上有很多教程,只要你开始行动起来,学习就会变得很容易。
点击了解 Incredibuild 加速 C++ 编译的解决方案!

点击获取Incredibuild试用!
Vim C++ – 大有可为!(C++ Vim 使用技巧)_第9张图片

你可能感兴趣的:(C++,vim,编辑器,c++)