Vim 2 高级用法

本文详细介绍了 Vim 的高级用法,包括 CWD/PWD 的概念及其影响,文本对象的高效操作,寄存器的读写与系统剪切板的访问,以及宏的录制和播放。此外,还讲解了缓冲区、窗口和标签页的管理,以及会话和折叠功能。理解并掌握这些内容,能够显著提升 Vim 的使用效率和体验。
摘要由CSDN通过智能技术生成

本节会讲一些 Vim 中的高级概念和进阶用法, 了解了这些之后, 可以解开很多疑惑, 使用起来也会更得心应手.

CWD/PWD

CWD(Current Working Directory), 当前工作目录, 这是 Vim 中一个挺重要, 但是却又经常被忽略的概念. 简单来说, CWD 是 Vim 和操作系统的文件系统进行交互时的上下文环境.

要查看 Vim 的 CWD, 你可以使用 :pwd 命令来查看. 正常来说, 当你点击桌面上的 gVim 图标打开 Vim 时, Vim 的 CWD 是用户目录, 当你在文件上右键->用 Vim 编辑打开 Vim 时, Vim 的 CWD 是文件所在路径.

CWD 有什么用呢? 现在请你打开 Vim, 然后在命令模式下执行 :e test_vim_cwd.txt, 你会看到打开了一个名为 test_vim_cwd.txt 的新文件, 你随便添加一些文本, 然后保存, 你会发现这次 Vim 不再提示你没有文件名, 你可以直接保存了. 那么问题来了, 这个文件被存到哪里了呢?

我想你应该已经猜到了, 没错, 在 Vim 里新建的文件, 如果不指定路径, 会被保存到 CWD 里. 所以说 CWD 是 Vim 和文件系统交互时的上下文环境.

除此之外, Vim 的很多插件工作时也依赖 CWD, 比如 NERDTree, CtrlP 等等.关于插件我们以后再讲, 现在你先记住, CWD 是会影响一些插件的表现的.

在现阶段, 你不需要关心 CWD, 因为我们现在还是单文件操作, CWD 是哪都无所谓. 但如果你确实想改一下 CWD, 可使用 :cd 命令修改 CWD:

cd d:/xxx/yyy

这和命令行里切换目录的方式是一样.

OK, 关于 CWD, 先说到这, 后面还会再说. 另外, 现在你又学会一个新命令: :e, 这个命令可以新建一个新文件. 其实, :e 这个命令后面可以路径/文件名, 如果给定的路径文件存在, 则是打开, 如果不存在, 则是新建.

文本对象

好, 我们再回到 Vim 的操作中, 请打开一个英文文本文件或输入一些英文, 以便接下来的学习.

之前的复制和删除都是以字符, 行为单位, 而 w, e, b的作用是从光标处到下个单词开头或本单词结尾, 所以要想删除整个单词, 你得这么做: bdw, 这表示先将光标移动到单词开头, 然后 dw. 这很麻烦, 有时候不小心看错了, 光标就移动错了. 要解决这个问题, 可以使用 文本对象.

现在请移动到一个单词的任意一个字母上, 然后执行指令 daw, 你会发现整个单词被删除了, 神奇吧. 这个指令中的 aw 在 Vim 中代表一个文本对象: a word, 即一个单词, 执行 daw 就表示删掉一个单词, 而且, 无论你在这个单词的哪个字母上, 都可以执行此命令删掉整个单词.

除了 aw, Vim 还支持下列文本对象:

  • aw: a word, 表示一个单词, 及其后面的空白, daw 表示删除光标所在单词及空白
  • iw: inner word, 也是表示一个单词, 但是不包括单词后面的空白
  • as: a sentence, 表示一个句子, 及其后面的空白, das表示删除光标所在句子及空白
  • is: inner sentence, 也是表示一个句子, 但是不包括句子后面的空白
  • ap/ip: a paragraph, 一个段落, 细节同上
  • a[, a] / i[, i]: 一个 [] 块, a[, a] 包括两边的 “[]”, i[, i] 不包括两边的 []
  • a(, a) / i(, i) / ab ib: 一个小 block, 细节同上
  • a{, a} / i{, i} / aB iB: 一个大 block, 细节同上
  • a<, a> / i<, i>: 一个尖括号块, 细节同上
  • a", a’, a` / i", i’, i`: 一对引号, 细节同上
  • at/it: 一个 tag, 匹配 HTML 或者 XML 中的 tag 及其内容, 会忽略单标签

上述文本对象大都可以使用计数器, 例如:

  • d3aw: 表示删除3个单词, as, ap 同理
  • y2ab / y2a(: 表示向外复制两层小括号的内容, 其他类似括号的同理
  • ", ', `, 这几个不可使用计数器

这样一来, 一次性可操作的文本就大大增加了, 而且不用关心光标的位置, 非常便捷.

寄存器

我们之前说过, 剪切(删除)的文本会进入到 Vim 中的寄存器里, 那什么是寄存器呢?

所谓寄存器, 就是存放文本和指令/命令的地方, 例如使用 y, d, c 等命令复制或剪切的文本都会被自动存放在 Vim 的寄存器中, 用户可以将文本和指令放在寄存器中, 也可以从寄存器中读出来.

Vim 中共有9类寄存器, 具体如下:

<
类型 标识 读写者 是否只读 包含的字符来源
Unnamed "
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值