vim 使用
1 vim 的模式
在 linux 操作系统中,有两款编辑器几乎平分天下:vim 和 emacs。vim 以其快速和简洁深受用户喜爱,在 vim 下一共有四种模式,分别是普通模式,插入模式,可视模式和命l令行模式。
(1) 普通模式:
也就是进入 vim 的初始化模式,在这个模式下可以对文本内容进行浏览,在其他任何模式下键入 esc 按钮都可以转换到普通模式。
(2)插入模式:
在插入模式下可以对文本内容进行编辑修改。
(3)可视模式:
可视模式相当于是高亮选取文本后的普通模式。
(4)命令行模式:
可以执行 vim 相关的命令,例如保存文件;或者用来改变编辑器本身的状态,例如设定多栏窗口、标签或者退出编辑器等操作。在普通模式下键入“Shift+ :”进入命令行模式。
2 vim 的使用技巧
(1).插入类命令
i // 在当前字符前插入
I // 在当前行首插入
a // 在当前字符后写入
A // 在当前行尾写入
o // 在当前行下面新增一行
O // 在当前行上面新增一行
s // 删除光标当前字符,进入到插入模式
S // 删除整行内容,进入到插入模式
r // 替换当前字符,替换之后立即退出插入模式变成普通模式
R // 从当前字符开始替换,直到按 ESC 才退出插入模式变成普通模式
ESC // 退出插入模式,进入普通模式
(2) 移动类命令
H // 左移
j // 下移
K // 上移
l // 右移
$ // 移动到本行的最后一个字符
G // 移动到最后一行
gg // 移动到第一行
ctrl + f // 向下翻一页
ctrl + b // 向上翻一页
H // 移动到屏幕最上方那一行的第一个字符
M // 移动到屏幕中间那一行的第一个字符
L // 移动到屏幕最下方那一行的第一个字符
(3) 搜索替换类命令
/word // 向后搜索 word
n // 继续向后搜索下一个
N // 继续向前搜索下一个
:%s/w1/w2/g // 全文档把搜索 w1 替换为 w2,如果不加 g,则只替换每行的第一个\匹配
:1,10s/w1/w2/g // 在 1~10 行内搜索 w1 替换为 w2
:8,$s/w1/w2/gc // 从第八行到最后一行搜索 w1 替换为 w2,并且请求确认
(4). 删除复制粘贴类命令
x // 删除当前字符
nx // 向后删除 n 个字符
dd // 删除当前行
ndd // 从当前行开始,删除 n 行,包括当前行
dgg // 删除当前行到开始行
dG // 删除当前行到结束行
d$ // 删除当前字符到行尾
d0 // 删除到行首,但不删除当前字符
yy// 复制当前行
yny // 从当前行向下复制 n 行
ygg // 复制当前行直到第一行
yG // 复制当前行直到最后一行
eg:y15y,从当前行向下复制 15 行
y0 // 复制到行首,但是不包括当前字符
y$ // 从当前字符复制到行尾
p // 在下一行粘贴,如果不是复制了整行,则是在当前字符后面粘贴
P // 在上一行粘贴,如果不是复制了整行,则在当前字符前面粘贴
u // 还原前一个动作,历史向后退
. // 重复前一个动作
(5). 存储退出类命令
:w // 将编辑的内容写入
:w! // 当为只读时,强制写入,但不一定能成功
:q // 退出 vim
:q! // 强制退出 vim 而不保存数据
:wq // 写入,然后退出
:wq! // 强制写入,然后退出
:w newfile// 另存为文件,但是仍旧在编辑当前文件,和 msword 不同
:n1,n2 w newfile // 把 n1 到 n2 另存到 newfile,但仍编辑当前文件
:r filename // 读入 filename 中内容,添加到当前行下面
:! cmd // 暂时离开 vim 界面,执行 cmd 命令,退出命令之后仍然回到 vim
:r ! cmd // 把 cmd 执行的输出,写到当前行下面
:set nu // 显示行号
:set nonu // 不显示行号
:set mouse=a // 使鼠标生效
(6). 选择类命令
v // 字符选择,会把光标所经过的字符反白选择
V // 行选择,会把光标经过的行反白选择
ctrl + v // 选择一个长方形的区域,在输入完 ctrl+v 之后,键入以下按钮:
y// 复制选择的区域
d // 删除选择的区域
r // 把选中区域全部字符替换为某个字符
I // 前面插入整列
A // 后面插入整列
(7)。 多窗口编辑
1)对于同一个文档,如果拆分成多个窗口,则在内存中只有一份文档,两个窗口只是显示部分不同而已,对应的是内存中同样的文档,在任何一个窗口中写入数据,另一个窗口也会显示
2)对于不同的文档,两个窗口则分别显示了内存中不同的缓存区域。但是两个文档之间的某些vim 命令是共享的,例如搜索,复制等等。但是 w 和 q 命令并不共享。
sp // 把当前文档分为两个窗口来显示
newfile // 新增一个窗口显示另一个文档
ctrl + w + j // 移动到下面的窗口
ctrl + w + k // 移动到上面的窗口
3.vim 设置
当我们使用 vim 时,在当前登陆用户的家目录中自动生成.viminfo 文件,用来保存 vim 的历史操作,以便在下次打开文档的时候,能快速重现文档的最后状态。
(1)对所有用户都生效的 vim 设置放置在/etc/vimrc 中,一般不做修改。
(2)个性化的设置,可以放在 ~/.vimrc 中。 vim 在启动时,首先会执行/etc/vimrc 中的配置命令,然后执行 ~/.vimrc 中的配置命令。