1.1 移动光标
h,j 上,下 k,l 左,右
ctrl-f 上翻一页, ctrl-b 下翻一页
ctrl-u 上翻半页, ctrl-d 下翻半页
b 跳到上一个单词, w 跳到下一个单词
0 跳至行首 $ 跳至行尾
^ 跳至行首
vi 快速选择
快速选择单词 ve
成对符号('单引',"双引",(圆括),(中括),(大括),<尖括>,`飘号`)内内容:
选中 vi'、vi"、vi(、vi[、vi{、vi<
更改 ci'、ci"、ci(、ci[、ci{、ci<
删除 di'、di"、di(或dib、di[、di{或diB、di<
复制 yi'、yi"、yi(、yi[、yi{、yi<
另外如果把上面的i改成a可以连配对标点一起操作。
1.2 搜索替换
#简单常用的替换操作
#当前行
:s/a/b/ #将当前行的第一个a替换为b
:s/a/b/g #将当前行的所有a替换为b
# 1到3行
:1,3s/a/b/ #将1至3行的第一个a替换为b
:1,3s/a/b/g #将1至3行的所有a替换为b
#所有行
:%s/a/b #将所有行的第一个a替换为b
:%s/a/b/g #将所有行的所有a替换为b
#高级的替换操作,涉及到转义,正则表达式相关的知识
:s#a/#b/# # (#作为分隔符)将当前行的字符串"a/"替换为"b/", 中间出现的/不会作为分隔符)
:g/a/d # 找到包含字母a的行并删除
:g/^$/d # 删除所有空行
:s/ \+/ /g # 多个空格替换为一个空格
1.3 函数跳转及分屏
# 1.2.1 代码跳转
gf #打开文件 go to file, 如 #include <stdio.h>
gd #打开(变量及函数等)定义处 go to definition
shift + k (或者大写K) # 打开帮助
ctrl + o #后退
# 1.2.2 不退出vi, 执行 shell 命令如:pwd
:!pwd
:!ls -alh
#打开多文件
vim xxx.h xxx.cpp ...
vim xxx.h xxx.cpp ...
# 多文件间切换
Ctrl + 6 #[数字6]在文件之间切换
:f 或 Ctrl+g #显示当前正在编辑的文档名称
:ls #打开的文件列表
:bn #下一个文件,也可以 b1 查看打开的第一个文件,b2查看打开的第一个文件等...
:bp #上一个文件
:N #编辑上一个文件。
# 1.2.3 分栏显示(split)
# 直接打开多个文件
vim -on xxx.h xxx.cpp ... # -on上下分栏打开n个文件
vim -On xxx.h xxx.cpp ... # -On左右分栏打开n个文件
# vim 中打开新文件,并与当前文件分栏
:new #创建空白分屏
:sp xxx #在当前文件上方栏打开文件xxx,且xxx变为当前编辑文件
:vsp xxx #在当前文件左侧栏打开文件xxx,且xxx变为当前编辑文件
:only #取消其它分屏,只保留当前分屏
# 当前编辑文件分栏,两栏内容相同
:sp #上下分割,快捷键Ctrl+ws
:vsp #左右分割
#或者
ctrl + w 和 s(split)
ctrl + w 和 v(vsplit)
# 在各栏切换的方法
Ctrl + w + h左 / j 下 / k 上 / l 右
Ctrl + w w #切换到下一个窗格中,周而复始
# 调整当前分栏大小(下面的n代表的是数字,并非字母n。省略n只缩放1行/列)
Ctrl + w + n > #左右扩大n列
Ctrl + w + n < #左右缩小n列
Ctrl + w + n + #上下扩大n行
Ctrl + w + n - #上下缩小n行
ctrl + w 和 = #恢复均等
# 关闭分栏
Ctrl + w + c #松开Ctrl再按c,否则命令无效
1.4 使用中文
# 1. 编辑locale.cnf , 添加内容
vi /etc/locale.conf
LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
# 2.保存退出, 下次重启生效
reboot