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中。