vim在工作过程中有三种模式: 命令模式 插入模式 末行模式
SYNOPSIS
vim [options] [file ..]
打开文件后,直接让光标处于指定行的行首
[root@centos6 test]#vi +20 testfile
命令模式==》插入模式转换:
i: 在光标所在字符的前面插入
I: 在行首插入
a: 在光标所在字符的后面插入
A: 在行尾插入
o: 在下方新建一行插入
O: 在上方新建一行插入
退出文件:
:q! 不保存强制退出
:wq 保存退出
:x 保存退出
:wq! 强制保存退出
命令模式保存退出快捷键: ZZ
命令模式光标移动:
字符移动:
h:左
l:右
j:下
k:上
单词移动:
w:下一个单词词首
e: 当前词尾或下一个单词词尾
b: 当前词首或上一个单词词首
行内移动:
^:行首第一个非空白字符
0:绝对行首
$:绝对行尾
行间移动:
#G:跳转到第#行
G: 最后一行 (敲两次]也能跳转到最后一行)
gg:第一行 (敲两次[也能跳转到第一行)
句子间移动:
)
(
段落间移动:
{
}
多行一起左右移动:先敲v进入VISUAL模式,移动光标选中多行后:
shift+< :整体往左移动
shift+> :整体往右移动
注意:移动的距离由 set shiftwidth决定
显示vim帮助文档:
WHAT PREPEND EXAMPLE
Normal mode command (nothing) :help x
Visual mode command v_ :help v_u
Insert mode command i_ :help i_<Esc>
Command-line command : :help :quit
Command-line editing c_ :help c_<Del>
Vim command argument - :help -r
Option ' :help 'textwidth'
vim命令模式命令:
x:删除光标所在处的字符
#x: 删除光标处起始的#个字符
r: 替换,先敲'r',光标所在处的字符将被替换为紧接着你敲的字符
d:删除,结合光标跳转命令使用,删除跳转范围内的字符
dd: 删除光标所在行 (删除的内容暂存在缓存区,紧接着用p可以粘贴刚刚dd删除的内容)
#dd: 删除光标所在行为起始行开始后面的共#行的内容
y: 复制,结合光标跳转命令使用,复制跳转范围内的字符
yy: 复制整行(Y也可以)
#yy: 复制从当前行往下#行的内容
p:粘贴,如果此时缓冲区里是整行,则粘贴于当前光标所在行的下方,否则,粘贴至当前光标所
在处的后面
P:大写P,与小p相反,粘贴在上方或者前面
c: 修改,结合光标跳转命令使用,修改跳转范围内的字符;就是先删除跳转范围内的内容,在
切换到插入模式
cc: 删除光标所在行整行,然后切换到插入模式(C也可以)
#cc: 删除光标所在行整行,然后切换到插入模式
vim 可视化模式: 结合编辑命令d, c, y使用更佳
v: 光标走过的字符
V: 光标走过的行
ctrl+v: 块选择(可对选中的列操作)
撤销操作:
u: undo,撤销此前的操作
#u: 撤销最近的#此操作
撤销u撤销的操作:
ctrl+r
翻屏操作:
ctrl+f: 向文件尾部翻一屏
ctrl+b: 向文件首部翻一屏
ctrl+d: 向文件尾部翻半屏
ctrl+u: 向文件首部翻半屏
末行模式命令:
内容定界:
#: 第#行
#,#: 从第#行到第#行
#,+#: 从第#行起,往下#行
.: 当前行
$: 最后一行
%: 全文,相当于1,$
/part1/,/part2/: 从第一次被part1模式匹配到的行开始,到第一次被part2模式匹配到的行
结束的内容
#,/part/: 从第#行开始到第一次被part模式匹配所在行的内容
/part/,#: 从第一次被part模式匹配的行到第#行的内容
/part/,+#: 从第一次被part模式匹配的行到此行往下#行的内容
w /path/to/somefile: 将选定范围内的内容保存至/path/to/somefile文件中
r /path/to/somefile: 将/path/to/somefile文件中的内容读取到当前指定的位置
查找:
/PATHERN: 从当前位置往文件末尾查找
? PATHERN: 从当前位置往文件首部查找
切换查找到的结果:
n:与命令同方向切到下一个结果
N: 与命令反方向切到下一个结果
noh: 关闭查询结果的高亮显示
查找并替换:
位置界定s/查找模式(支持基本正则表达式)/替换内容/修饰符
位置界定:指定查询范围,如 %s/part/something/g 表示全文件查询,全文替换
替换内容:不支持模式,但能使用引用(\1,\2等后向引用,或'&'引用前面查找模式匹配到的整个内容)
修饰符:
i: 忽略大小写
g: 全局替换,默认只替换每行的第一个
分隔符/可以用其它没有出现过的字符替代,如s@@@ s### s===等
删除匹配到的行:
g/PATHERN/d: 删除全文匹配到的行
4,10g/PATHERN/d: 删除第4行到第10行匹配到的行
v/PATHERN/d: 删除全文除了匹配行以外的全部行
多窗口模式:
vim -[o|O] file1 file2 file3 :打开多个文件,出现多个窗口
o:窗口水平分割
O:窗口垂直分割
ctrl+w (上下左右箭头):窗口间光标切换,敲两次ctrl+w可以在窗口间依次切换
单个文件多窗口:
ctrl+w,s: 水平分割
ctrl+w,v: 垂直分割
多文件模式:
vim file1 file2 file3 : 打开多个文件(只显示其中一个文件)
next: 切换到下一个文件
previous: 切换到上一个文件
last: 切换到最后一个文件
first: 切换到第一个文件
qall: 全部退出
qall!: 全部不保存强制退出
wqall: 全部保存退出
窗口属性定义:
set nu: 显示行号
set nonu: 关闭行号
set ai: 启动自动缩进功能
set noai: 关闭自动缩进功能
set ic: 忽略字符大小写
set noic: 区分字符大小写
set sm: 括号匹配
set nosm: 取消括号匹配
syntax on: 语法高亮显示
syntax off: 关闭语法高亮
set hlsearch: 开启搜索结果高亮
set nohlsearch: 关闭搜索结果高亮
noh: 本次搜索结果关闭高亮显示
- 末行模式属性定义只对当前vim进程有效,可通过修改如下vim配置文件进行定义:
- /etc/vimrc: 全局有效
- ~/.vimrc: 对当前用户有效
在~/.vimrc中添加如下,设置自动缩进,tab键为4个空格
set tabstop=4
set expandtab
set softtabstop=4
set shiftwidth=4
set autoindent
多行注释和多行取消注释:
多行注释:
1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来
2. 按大写字母I,再插入注释符,例如//
3. 按esc键就会全部注释了
取消多行注释:
1. 进入命令行模式,按ctrl + v进入 visual block模式,按字母l横向选中列的个数,例如 // 需要选中2列
2. 按字母j,或者k选中注释符号
3. 按d键就可全部取消注释