保存
:wq
shift zz (按住shift,按z是大写的Z)
:r 文件路径文件名 (导入文件内容到光标下一行)
文件命令
同时打开多个文件
vim file1 file2 file3
在vim窗口下打开一个新文件
:open file
在新窗口中打开文件
:split file
切换到下一个文件
:bn
切换到上一个文件
:bp
查看当前打开的文件列表,当前正在编辑的文件会用 [ ] 标注
:args
插入命令
i 在光标前插入
a 在光标后插入
I 在光标行首插入,本行第一个字符前
A 在光标行末尾插入
o (小写)在光标下方新建行
O (大写)在光标上方新建行
u 撤销
查找命令
/file 查找file,按 n 键查找下一个,按 N 键查找上一个。
:set ignorecase 或 :set ic 忽略字母大小写的查找
:set noignorecase 或 :set noic 不忽略字母大小写的查找
:set hlsearch 高亮显示搜索结果,高亮显示所有查找内容
:set nohlsearch 关闭高亮显示,下次查找不开启
:nohlsearch 关闭本次查找的高亮显示,下次开启
:set nu 或者 :set number 设置行数
: set nonu 取消行号
替换
shif + ~ (ESC模式下)光标所在处的字符进行大小写互换
:%s/old/new/g 全文替换字符串,把old替换成new
: 2,10s/old/new/g 替换2到10行字符串
如果要确认 选择c 不确认是g
:2,10s/old/new/c
:32, $s/name// 替换32行的第一个 name 为空
移动
h 左移一个字符
l 右移一个字符 (此命令少用,一般用 w 代替)
k 上移一个字符
j 下移一个字符
(10h,向左移动10个字符; 8j,向下移动8行)
w 向前(右)移动一个单词(2w,向前移动2个单词),光标停在单词首部。
b 向后(左)移动一个单词 (2b,……)
e 同 w 但是光标停在单词尾部
ge 同 b 光标停在单词尾部
gg 移动到本文件头部,最顶端。
G 移动到文件尾部
nG 到n行
:n 到n行
0 (零) 移动到本行第一个字符上(含空白字符)
^ 移动到本行第一个非空白字符上
$ 移动到行尾 (3$ 移动到下面三行的行尾)
跳到指定行,冒号+行号,回车,比如跳到240行就是 :240回车。另一个方法是行号+G,比如230G跳到230行。
Ctrl + e 向下滚动一行
Ctrl + y 向上滚动一行
Ctrl + d 向下滚动半屏
Ctrl + u 向上滚动半屏
Ctrl + f 向下滚动一屏
Ctrl + b 向上滚动一屏
撤销和重做
u 撤销(Undo)
U 撤销对整行的操作
Ctrl + r 重做(Redo),即撤销的撤销。
删除
x 删除当前字符(也可以是 dl )(3x 删除当前光标开始向后三个字符)
X 删除当前字符的前一个字符(也可以是 dh)
dd 删除当前行
10d 删除当前行开始的10行
dj 删除上一行
dk 删除下一行
jdG(j d shift + g)删除当前行之后所有行(不包括当前行)
kdgg 删除当前行之前所有行(不包括当前行)
d$ 删除当前字符之后的所有字符(本行)
D 删除当前字符至行尾。D=d$
J (shift + j) 删除两行之间的空行,实际上是合并两行。
:1,10d 删除1-10行
:11,$d 删除11行及以后所有的行
:1,$d 删除所有行
:1,10g/^$/d 删除1到10之间的空行
复制和黏贴剪切
yy 或 Y 拷贝当前行
nyy 或 nY 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行。
p 在当前光标行后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。
P 大p,当前光标行之上复制
shift+p 在当前行前粘贴
dd 按p剪切 dd也是删除命令
定义快捷键
:map ^p I#<ESC> ctrl+p ( ^是按ctrl+v出来的,大写的i是在行首插入,行首插入#号,然后ESC键返回命令模式)
:map ^b 0x ctrl+b (删除行首的字符,x表示删除光标所在的字符)
取消 :unmap ^p
:2,7s/^/#/g 在2到7行的行首加上#号 ^ 表示行首
:2,7s/#//g 把行首的#号去掉 //无内容表示替换为空,但是如果后面也有#号也会去掉
:2,7s/^#//g 只把行首的#号去掉
如果行首需要加上 // 两个斜杠,需要用转义符\
:2,7s/^/\/\//g
替换
:ab sb mabi@163.com 输入sb 回车就会变成mabi@163.com
取消 :unab mabi@163.com
永久配置以上
如果是个人用户在用户家目录
自建一个 .vimrc的文件
set nu
map ^b I#<ESC>
就可以了
全局用户在 /etc/vimrc 尽量别操作
多行缩进:
按v进入visual状态,选择多行,用>或<缩进或缩出
在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。
你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。
visual模式有三种:
默认的visual模式,按下 v 就可以进入
visual line模式,V 可以进入
visual block模式,Ctrl-V 进入
查看编码
:set fileencoding
:set fileencoding=utf-8
一些快捷键
<ESC模式>
ctrl-a 可以将光标所在处的数字加1,负数和多位数都在支持范围内
ctrl-x 有加1就会有减1