VimNext

之前一篇博客为大家介绍的VIM的一些入门介绍。 相信不少朋友已经感受到了VIM的魅力所在。 我们不能停留在入门的阶段, 如何越过基础的藩篱, 今天为大家详细分享。

移动命令补充

先补充一些营养:

  • H 移动到文本开头 类似于gg
    • cH 更改从光标到文本开头的部分
    • dH删除从光标到文本开头的部分
    • yH复制从光标到文本开头的不封
  • L移动的文本末尾
    • cL
    • dL
    • yL

这两个命令比gg 和 G 来的更快。

  • +移动到上一段 (不同版本可能不同 也有可能是{ 而+是移动到上一句或者上一行)
  • -移动到下一段
    • c+ d+ y+ (-)
  • n| 本行第n列

利用缓存区 (文本编辑的“工业革命”)

恢复文本

我们已经知道, 编辑时最后一次删除或者复制(y 也叫拖曳) 的内容会保存到缓冲区中。

实际上vim 会将最后9次的删除操作保存在有着不同编号的缓冲区中,你可以访问其中任意一个而不只是最后一个。

要恢复文件操作 先输入 “ 然后指定np。 n为最后第n次删除或者拖曳的字符。

例如:

"2p

将文本拖曳到命名缓存区中

用y或者d 将指定文本放在一个你指定的缓存区(缓存区命名为a,b,c…~z)。以便于用的时候直接拿。 举个例子, 当你编写代码时, 某一段代码需要反复调用函数A 和函数B。 这个时候你可以将函数A,B的调用 分别存储到缓存a,和缓存b中。 然后用的时候从这些缓存区中提取。

  • 第一步: 将文本拖曳到指定缓存区

    选定一段文字,然后:

    "ayy( 请记住 任何关于缓存区的操作都以”为开头)

    选定另一段文字

    "byy

    现在a,b分别存储着你预先放好的代码。

    当你在某处需要用到b中的内容时。

  • 第二部:从指定缓存区提取文本

    "bp

    这样就取出了b中的内容。

vim有26个(abcd..)的缓存区共你使用,如果善于利用缓存区,编写文本的速度将不是用倍数就可以形容的。

我之所以把这个功能称为文本编辑的工业革命,是因为你将文本模块化,工具化。 用工具造文本,不就是人类进化的历程吗?瞬间移动

书签的利用(学会瞬间移动)

在一个vim文本编辑过程中,你可以在某处做一个看不见的书签, 然后在别处编辑文件。 编辑完成后 瞬间回到之前的位置。 你也可以创建多个书签, 实现空间跳跃

mx将当前位置标记为x。 x可以是任意字符, 根据自己的爱好或者特定情况自定。

'x (单引号) 将光标移动到x 所在行的第一个字符。

`x(反引号-在esc下面) 将光标移动到x所在的字符(准确制导)。

``两个反引号。 移动位置之后,回到瞬移前的位置。

''两个单引号。 移动位置后, 回到瞬移前位置的第一行。

添加文本

在一个文件中如何假如另一个文件的内容呢?

: r filename

冒号 进入命令模式, r 是read 的缩写 filename 是你要添加的文件名字(必要时需要绝对路径,推荐将他们放到同级目录中)。

查找替换

当你忽然发现 你的代码中所有的Student 类写成了People。 这个时候你可以使用vim的查找替换功能。 该功能在命令模式下实现。

在使用查找替换之前,必须声明:查找替换是一个十分高效的方法,同时也有极大的分享。 某些地方本不应该被替换。 所以在一次失败后,可以按u 撤销。 但还是建议大家 按 :w 保存文件。 之后按:e! 读出上一版本的内容。

s(substitue) 替换。

命令格式:

:s/old/new/将当前行第一个出现old的地方换为new

:s/old/new/将当前行所有old换为new

:m,ns/old/new/g 将m行到n行的old换为new

:1,$s/old/new/g 将整个文本的old换成new

Vim的多窗口编辑

如何在一个窗口同时编辑两个文本?

:split file2

将垂直的打开文件2.

在窗口之间跳动。 CTRL+W+j。

  • 移动窗口

    ^WK移动当前窗口至屏幕顶端。

    ……还有很多其它位置,因为用的不多,就不一一赘述。

折叠文本

在编写代码是时,我们有时会写数白上千行代码。 这样造成代码可读性下降。 VIM可以将特定的部分折叠。 例如,将函数块折叠,只包括函数名。

所有折叠命令都以z开头,我只介绍常用操作。

  • 创建一个折叠

zf创建折叠 从光标位置到下一次光标出现的位置进行(需要借助移动指令)折叠。

例如:

1 I LOVE U

2 FOREVER

3 BELIEVE ME

这是一段文本, 前面是行号。 当前光标在I LOVE U 的 I的位置。

输入下面命令:

zf

3G // 将光标移动到第三行

就可以折叠这段代码。

  • 切换一个折叠的状态(开关)

za

  • 删除一个折叠

zd

  • 去除所有折叠

zE

到此,我们介绍了一些常用的VIM进阶技巧。 希望永于实践的同学可以 多多练习。

下次,会是最后一篇关于VIM的博客,它会非常简短,主要是介绍如何将VIM内置到你的IDE中。