一般模式
光标移动 | |
---|---|
上下左右 | h(<-)/ j(下)/ k(上)/ l(->) |
30j: 光标向下30行 | |
-(减号) | 向上移动一行 |
30-:向上移动30行 | |
+(加号) | 30+:向下移动30行 |
下一页 | Ctrl + F |
上一页 | Ctrl + B |
下半页 | Ctrl + D |
上半页 | Ctrl + U |
右移动当前行n个字符 | 20:光标向后移动20个字符的距离 |
移动到当前行开始 | 0 |
移动到当前行结尾 | $ 或者 End |
回到当前文件的最后一行 | G(大写),小写g没有任何效果 |
回到当前文件的第一行 | gg(小写) |
定位到第n行 | 30G:定位到第三十行 |
光标向下n行 | n[Enter] |
查找与替换 | |
向下寻找第一个字符串 | /word(word代表一个字符串),第一个结果 |
向上寻找第一个字符串 | ?word,第一个结果 |
重复前一个查找操作 | n(小写),刚执行/word,则寻找下一个符合的结果 |
N(大写), 与小写n的意思相反 | |
查找&&替换 | :n1,n2s/word1/word2/g,n1行到n2行中,将字符串word1代替为word2; |
n2替换为$时,表示最后一行 | |
g替换为gc时,替换前提示用户是否确认 | |
删除、复制、粘贴 | |
删除字符 | x(小写),向后删除一个字符,等同于[Del] |
X(大写),向后删除一个字符,等同于[BackSpace] | |
nx/nX,向后/向前删除n个字符 | |
删除行 | dd,删除光标所在的一整行 |
ndd,删除光标所在的向下n行,20dd:删除20行 | |
d1G,删除光标所在行到第一行的所有数据 | |
dG,删除光标所在行到最后一行的所有数据 | |
d$,删除从光标所在处到该行的最后一个字符 | |
d0,删除从光标所在处到该行的第一个字符 | |
复制 | yy,复制光标所在的那一行 |
nyy,复制光标所在的向下n行 | |
y1G,复制光标所在行到第一行的所有数据 | |
yG,复制光标所在行到最后一行的所有数据 | |
y0,复制光标所在的那个字符到该行行首的所有数据 | |
y$,复制光标所在的那个字符到该行行尾的所有数据 | |
粘贴 | p(小写),将已复制的数据在光标下一行粘贴 |
P(大写),将已复制的数据在光标上一行粘贴 | |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 删除当前行;2c,删除当前行以及下面2行(共3行),并进入编辑模式 |
u | 复原前一个操作,理解成 Ctrl+Z |
Ctrl + r | 理解成windows上的Ctrl + Y |
. | 重复前一个操作 |
一般模式切换到命令行模式
:w | 将编辑的数据写入硬盘 |
:w! | 若文件只读时,强制写入该文件 |
:q | 离开vi |
:q! | 若修改过文件,又不想存储,使用"!"为强制离开,不保存 |
:wq | 保存后离开,wq!,则表示强制保存后离开 |
ZZ | 文件没有更改,则不保存离开; |
文件有过改动,则保存后离开; | |
:w[filename] | 将编辑的数据保存到另一个文件,(整个编辑好的数据) |
:r[filename] | 在编辑的数据中,读入另一个文件的数据,放在光标所在行的后面 |
:n1,n2 w [filename] | 将n1到n2的内容保存成filename这个文件 |
:! Command | 暂时离开vi到命令行模式,执行command的显示结果 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
补:数字多代表重复做几次,或者代表去第几个什么什么的意思。
块选择
V | 字符选择,会将光标经过的地方反白选择 |
V | 行选择,会将光标经过的行反白选择 |
[Ctrl] + v | 块选择,可以用长方形的方式选择数据 |
y | 将反白的地方复制起来 |
d | 将反白的地方删除 |
多文件编辑按键
同时编辑多个文件 | vim file1 file2 |
编辑下一个文件 | :n |
:N | |
列出目前这个vim打开的所有文件 | :files |
多窗口情况下的按键功能
:sp [filename] | 打开一个新窗口,如果有加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件(同步显示) |
[Ctrl] + w + j / [Ctrl] + w + [下] | 按键的按法是:先按下[Ctrl]不放,再按下w后放开所有的按键,然后再按下j(或向下箭头),则光标移动到下一个窗口 |
[Ctrl] + w + k / [Ctrl] + w + [上] | 同上,不过光标移动CD到上一个窗口 |
[Ctrl] + w + q | 等同于在当前窗口,:q |
Vim的环境参数设置
:syntax on/off | 是否依据程序相关语法显示不同颜色 |
:set bg=dark/light | 可以用以显示不同的色调 |
参考文献:《鸟哥的Linux私房菜 基础学习篇》人民邮电出版社