文章目录
VIM总结
移动
词移动
-
w
移到下一个单词的词头,b
移动到上一个单词的词头。 -
大写字母可以用来移动字符串。而不是一个单词。可以试试
W 和B
与w和b
移动到一个指定的字符
- 本行字符查找命令
fx
,f:查找命令,x:待查找的字符 3fl
表示,查找本行中第三次出现字符l
的位置f
表示向右查找,F
表示向左查找。
移动指定行
1G
跳到第一行
10G
跳转到第10行
50%
跳转到文件中间
G
跳转到最后一行
搜索
使用/
来启动查找对应的字符串。查找方式是正向查找。
使用?
为反向查找。
N
查找下一个匹配对象。
简答的查找模式
^
匹配行头
$
匹配行末
.
匹配任意单个字符,比如c.m
,将匹配。“com became cumin”
匹配特殊字符
如果你想匹配点字符。可以在.
前添加一个\
进行转义。eg: ter\.
标记
自定义标记位置,使用m+[a-z]
,二十六个字母。来标记26个位置。eg:ma
,标记当前位置。使用``a`,跳转到这位置。
使用:marks
,来查看当前标记列表。当然有一些特殊标记。
你会注意到有一些特殊的标记,包括:
' 跳转前的光标位置 " 最后编辑的光标位置 [ 最后修改的开始位置 ] 最后修改的结束位置
全局标记
如果你编辑另一个文件并在那里加了标记,这些标记都是这个文件专用的。这样,每个文件都
有一个自己的标记集,并只能在该文件中使用。
到此为止,我们都用小写字母的标记。实际上还可以使用大写字母标记,这种标记是
全局的,它们可以在任何文件中使用。例如,你在编辑一个文件 “foo.txt”。在文件的中
间 (50%) 并建立一个 J 标记 (J 表示甲):
50%mJ
现在编辑文件 “bar.txt” 并在文件的最后一行放一个标记 Y (Y 表示乙):
GmY
现在你可以使用 “J" 命令跳回到 foo.txt 的中间。或者在另一个文件中输入 "
Y” 跳
回到 bar.txt 的末尾。
查看所有标记
:marks
分隔窗口
:split
将当前窗口的大小,分为上下两个。
:vsplit
将当前窗口的大小,分为左右两个。
CTRL-W h 跳转到左边的窗口 CTRL-W j 跳转到下面的窗口 CTRL-W k 跳转到上面的窗口 CTRL-W l 跳转到右边的窗口
用 vimdiff 显示文件差异
有一种特殊的启动 Vim 的方法可以用来显示两个文件的差异。让我们打开一个 “main.c”
并插入一些字符。在设置了 ‘backup’ 选项的情况下保存这个文件,以便产生 “main.c~”
备份文件。
在命令行中输入如下命令:(不是在 Vim 中)
vimdiff main.c~ main.c
Vim 会用垂直分割的方式打开两个文件。你只能看到你修改过的地方和上下几行的地方
标签页
你会注意到窗口永远不会重叠。这意味着屏幕空间很快会用完。这个问题的解决方法叫做
标签页。
假设你正在编辑文件 “thisfile”。下面的命令可以建立新的标签页:
:tabedit thatfile
这会在一个窗口中编辑文件 “thatfile”,这个窗口会占满整个 Vim 窗口
你可以通过单击顶端的标签切换标签页。如果没有鼠标或者不想用它,可以使用 “gt” 命
令。助记符:Goto Tab。
在任何打开窗口的 Ex 命令前面,你都可以放上 “:tab”。这个窗口在新标签页中打开。
另一个例子:
:tab help gt
它将在新的标签页中显示关于 “gt” 的帮助。
使用标签页可以完成更多的工作:
- “tabonly” 命令
关闭除了当前标签页以外的所有标签页,除非其它标签页中的改变没有保存
可视列块模式
插 入 文 本
你用 CTRL-V 进入可视列块模式,然后移动光标定义一个列块。接着输入 I 进入插入模式,并随后输入文
本。这时,你输入的内容只出现在第一行。 然后你输入 结束输入,刚才输入的字符串将神奇地出现在每一行的可视区的左边。
如果选中的块经过一个短行,并且这行没有任何内容包括在可视列块中,则新的文本不会
被插入到该行中。如下。
This is a long line
short
Any other long line
^^^^ 用可视列块选中的部分
追加文本
“A” 命令的效果与 “I” 命令一样,只是把文字插入可视列块的右边,而且在短行中会插
入文字。
修 改 文 本
可视列块中的 “c” 命令会删除整个可视列块并转入 “插入” 模式,使你可以开始文本,
这些文本会被插入可视列块经过的每一行。
与 “I” 命令一样,短行不会发生变化。
查找文件
假定现在你在编辑一个 C 程序,该程序有这样7行:
#include “inits.h”
你想要查看文件 “inits.h” 里有些什么。把光标移到该文件名上,并键入:
gf
Vim 就会找到并打当这个文件。
那么,如果该文件不在当前目录里怎么办?Vim 将利用 ’path’ 选项来寻找这个文
件。该选项是/系列目录名,Vim 会在其中为你寻找文件。
假设你把你的头文件存放在目录 “c:/prog/include” 里。下面这个命令把该目录加入
’path’ 选项:
:set path+=c:/prog/include
这个目录名是/绝对路径。不管你在哪儿,它都指向同一个目录。如果你已经知道要编辑的
文件位于当前文件所在目录下某个子目录里,你该怎么办呢?那样的话,你可以指定一个
相对路径。相对路径以 “.” " 始:
补 全 源 代 码
源代码文件有良好的结构。这使通过某种智能方式补全成为可能。在 Vim 中,这被称为
全能补全。在其他编辑器中,它被称为智能补全(intellisense),但这是一个注册商标。
全能补全的热键是 CTRL-X CTRL-O
。显然,O 在这里代表全能 (Omni),这样方便我们记
忆。让我们以编辑 C 程序为例:
*{* ~
struct foo *p; ~
p-*>* ~`
光标在 “p->” 之后。现在键入 CTRL-X CTRL-O
。
为使全能补全工作, 要做一些初始化。起码,要保证打当文件类型插件。你的 vimrc
文件应该包含形如:
filetype plugin on
或:
filetype plugin indent on