一般模式:移动光标
h 或 ← #光标向左移动一个光标
j 或 ↓ #光标向下移动一个光标
k 或 ↑ #光标向上移动一个光标
l 或 → #光标向右移动一个光标
移动多行,30j 或者 30↓
Ctrl + f #向下移动一页
Ctrl + b #向上移动一页
Ctrl + d #向下移动半页
Ctrl + u #向上移动半页
+ #移动到非空格的下一行
- #移动到非空格的上一行
n<space> #n表示数字,20 + 空格,光标在所在行移动20个字符距离
0 #数字0,移动到行的最前字符(常用)
$ #移动到行尾(常用)
H #移动到屏的最上一行
M #移动到屏的中间一行
L #移动到屏的最下一行
G #移动到文件的最后一行(常用)
nG #n为数字,20G。移动到文件的第20行
gg #移动到文件第一行(常用)
n<Enter> #n为数字。向下移动n行(常用)
一般模式:搜索与替换
/word #从光标开始,向下查找个名字为word的字符串。(常用)
?word #从光标开始,向上查找个名字为word的字符串。
n #n为按键,重复前一个搜索动作
N #N为按键,重复与前一个搜索动作相反的操作
:n1、n2s/f_word/i_word/g #从第一行和n2行,i_word替换f_word。例子:11、22s/find/inste/g (常用)
:1、$s/f_word/i_word/g #从第一行和最后一行,i_word替换f_word。(常用)
:1、$s/f_word/i_word/gc #从第一行和最后一行,i_word替换f_word,且替换前提醒用户确认(常用)
一般模式:删除、复制与粘贴
x,X #x删除后一个字符,X删除前一个字符
nx #n为数字,连续向后删除n个字符
dd #删除整行(常用)
ndd #n为数字,向下删除n行
d1G #删除光标所在位置到第一行的所有数据
dG #删除光标所在位置到最后一行的所有数据
d$ #删除光标所在位置到行尾的字符串
d0 #删除光标所在位置到行首的字符串
yy #复制光标所在的那一行(常用)
nyy #n为数字,复制光标所在的向下n行。例:20yy(常用)
y1G #复制光标所在行到第一行
yG #复制光标所在行到最后一行
y$ #复制光标到行尾的字符串
y0 #复制光标到行首的字符串
p,P #p将复制内容粘贴到光标的下一行,P将复制内容粘贴到光标的上一行(常用)
J #将光标所在行与下一行结合成同一行
c #重复删除多个数据,例如 10cj
撤销和回复
u #复原前一个操作
Ctrl + r #重做上一个操作
. #这是个小点,重复前一个动作
进入编辑模式
i、I #插入,i 光标处插入,I 在当前第一个非空符处开始插入(常用)
a、A #a 当前光标下一个字符开始插入;A 从光标所在行最后一个字符处开始插入(常用)
o、O #o 当前光标下一行插入新的一行;O 光标上一行,插入新行(常用)
r、R #替换:r 替换光标所在那一个字符;R 一直替换所在文字,直到按下Esc键为止(常用)
退回一般模式
Esc # 退回一般模式
命令行命令模式
:w #写入硬盘
:w #强制写入该文件
:q #离开 vim
:q! #强制退出,不保留修改
:wq #写入,并退出
:e! #将文件还原到最原始状态
ZZ #若文件没有更改,则不存储离开;若修改,则存储后退出
:w [file name] #将编辑内容存储到file name文件
:r [file name] #将file name文件写入光标所在行的后面
:n1、n2w[file name] #将n1行到n2行写入到file name文件
:!command #暂时离开vim到命令模式执行command。例 !ls /home
:set nu #显示行号
:set nonu #取消行号
块选择
v #字符选择,会将光标经过的地方反白选择
V #行选择,将光标经过的行反白选择
Ctrl + v #块选择,可以用长方形的方式选择数据
y #复制反白的地方
d #删除反白的地方
多文件编辑
:n #编辑下一个文件
:N #编辑上一个文件
:file #列出当前vim打开的所有文件
多窗口功能
:sp[file name] #打开一个新的窗口,加filename,则新窗口打开新文件,否则内容同一
Ctrl + wj #先按Ctrl,再w,放开再按j,光标进入下一个窗口
Ctrl + wk #同上,方向相反
Ctrl + wq #当前的退出,跳到下个窗口
vim环境设置
:set nu #
:set hlsearch #
:set backup #
:set ruler #
:set showmode #
:set backspace=(012) #
:set all #
:syntax(off|on) #
DOS与Linux的换符
dos2unix -kn file newfile
unix2dos -kn file newfile