1> 打开 保存 关闭文件(命令模式下使用)
:w # 保存文件.
:w filename # 保存到filename文件.
:q # 退出编辑器(若文件已经修改,使用下面的命令).
:q! # 退出编辑器,且不保存.
:wq/:x/ZZ # 退出编辑器,且保存文件.
2> 插入文本或行.
a # 在当前光标位置的右边添加文本.
i # 在当前光标位置的左边添加文本.
o # 在当前行的下面新建一行.
A # 在当前行的末尾位置添加文本.
I # 在当前行的开始处添加文本(非空字符的行首).
O # 在当前行的上面新建一行.
J # 合并光标所在行及下一行为一行(命令模式下).
3> 取代指令.
r # 取代游标所在处之字符.
R # 进入取代模式(replace mode),取代字元至按Esc键为止.
cc/S # 取代整行内容.
cw # 替换一个英文字(word).
~ # 游标所在处字元大小写互换.
C/c$ # 取代至行尾,即游标所在处之后的字都会被替换.
c0/c^ # 取代至行首.
s # 替换一个字元为你所输入的字串.
4> 简单重排功能.
>> # 整行向右移一个shiftwidth.
<< # 整行向左移一个shiftwidth.
:ce(nter) # 本行文字置中.
:ri(ght) # 本行文字靠右.
:le(ft) # 本行文字靠左.
gqap # 整段重排.
gqq # 本行重排.
gqG # 全文重排,是以游标所在处的段落开始重排至档尾.
5> 移动光标.
命令模式下:
h -- 向左
j -- 向下
k -- 向上
l -- 向右
空格键 -- 向右
Backspace -- 向左
Enter -- 移动到下一行首
- -- 移动到上一行首.
ctrl+f -- 即PageDown翻页键(Forward,向前,下翻页)
ctrl+b -- 即PageUp翻页键(Backward,向后,上翻页)
$ -- 移动到行尾
^/0 -- 移动到行首.
gg -- 移动到文件开始位置
G -- 移动到文件末尾.
w -- 移至次一个字(word)字首(英文单词)
W -- 同上,但会忽略一些标点符号
e -- 移至后一个字字尾
E -- 同上,但会忽略一些标点符号
b -- 移至前一个字字首
B -- 同上,但会忽略一些标点符号
H -- 移至屏幕顶第一个非空白字元
M -- 移至屏幕中间第一个非空白字元
L -- 移至屏幕底第一个非空白字元
:n -- 移至第n行行首,dd
n+ -- 向下跳n行.
n- -- 向上跳n行.
ngg/nG/:n -- 跳转到第n行
) -- 移至下一个句子
( -- 移至上一个句子
} -- 移至下一个段落
{ -- 移至上一个段落
% -- 这是匹配{},(),[]用的,如:鼠标在{上只要按%,就会跑到相匹配的}上
6> 删除 恢复
x # 删除当前字符.
X # 删除光标前字符.
nx # 删除当前光标开始的n个字符.
dd # 删除当前行.
d0/d^ # 删除当前行光标前的所有字符.
d$/D # 删除当前行光标后的所有字符.
dw # 删除光标所在单词.
ndd # 向下删除当前行在内的n行.
u(undo) # 撤销上一步操作
U # 撤销对当前行的所有操作
ctrl+r # 反撤销.
7> 搜索(命令模式下使用)
/string # 向光标下搜索string字符串.
?string # 向光标上搜索string字符串.
* # 寻找游标所在处至word(要完全符合).
# # 同上,但是*是向前(下)找,#是向后(上)找.
g* # 同*,但部分符合即可.
g# # 同#,但部分符合即可.
n # 向下搜索前一个搜索动作.
N # 向上搜索前一个搜索动作.
8> 替换
:s/old/new # 用new替换行中首次出现的old.
:s/old/new/g # 用new提行行中所有的old.
:n,m s/old/new/g # 用new替换从n到m行里所有的old.
:%s/old/new/g # 用new替换当前文件里的所有old.
9> 复制粘贴
yy -- 复制当前行到缓冲区.
nyy/yny -- 将当前行向下n行复制到缓冲区.
y^/y0 -- 复制从光标到行首的内容.
y$ -- 复制从光标到行尾的内容.
yw -- 复制从光标开始到词尾的字符.
ynw/nyw -- 复制从光标开始的n个单词.
yG -- 复制至档尾.
y1G -- 复制至档首.
[a-z]yy/"[a-z]yy -- [a-z]为缓冲区,可以完成多个复制任务.
[A-Z]yy/"[A-Z]yy -- 同上行类似,但不会覆盖原缓冲区的内容而是附加在后面.
[a-z]nyy/"n[a-z]yy -- 复制多行到[a-z]缓冲区,可以完成多个复制任务.
[A-Z]nyy/"n[A-Z]yy -- 同上行类似,但不会覆盖原缓冲区的内容而是附加在后面.
若忘了缓冲区中的内容,:reg就会列出所有registers的代号及内容.
p -- 粘贴剪切板里的内容在光标后.
"[a-z]p -- 将[a-z]缓冲区的内容粘上.
P -- 粘贴剪切板里的内容在光标前.
"[a-z]P -- 将[a-z]缓冲区的内容粘上.
10> 书签功能.
mx # x代表26个小写英文字母,这样游标所在处就会被mark.
`x # 回到书签原设定位置.
'x # 回到书签设定行行首,'是forward quote,是Enter键左边的键.
11> 设置行号
:set nu # 显示行号.
:set nonu # 取消显示行号.
12> 重复上一条操作.
. # 重复前次的编辑动作.
13> 编辑其他文件.
:e otherfilename #编辑文件名为othername的文件.
14> 修改文件格式:
:set fileformat=unix # 将文件修改为unix格式.
15> 可视模式
v # 切换到可视模式,用hjkl选择内容,复制:y,删除:d.
#+粘贴两边无换行符.
16> 在vim中输入shell命令
:!command # 如: :!ls
17> 分屏
分屏启动vim:
vim -On file1 file2 ... filen # 大写的O参数来垂直分屏.
vim -on file1 file2 ... filen # 大写的O参数来水平分屏.
注释:n是数字,表示分成几个屏.
命令模式下分屏:
:new/ctrl+w+n # 新建文件并分屏.
:sp (filename) # 水平分屏.
:vsp (filename) # 垂直分屏.
:only # 取消分屏,取消当前的屏(光标所在的屏).
ctrl+w,v # 左右分割当前打开的文件(与:sp相同).
ctrl+w,s # 上下分割当前打开的文件(与:vsp相同).
ctrl+w,w # 后一个.
ctrl+w,p # 前一个.
ctrl+w,h/i/k/l # 四个方向.
ctrl+w,c # 关闭当前屏.
ctrl+w,o # 关闭其他窗口.
:wqall/:q!all # 全部保存/不保存退出.
:wq/:q! # 退出光标所在的窗口.
载入文件:
:vs/vsp 文件路径/文件名 # 在新的垂直分屏中打开文件.
:sv/sp 文件路径/文件名 # 在新的水平分屏中打开文件.
屏幕尺寸:
ctrl+w,= # 所有的屏都有一样的高度(恢复均等).
ctrl+w,+ # 增加高度.
ctrl+w,< # 向左.
ctrl+w,> # 向右.
17> vim配置文件
打开vim,输入:version即可查看配置文件的位置
通常的位置:
/etc/vim/vimrc # 系统vim配置文件.
$home/.vimrc # 用户vim配置文件
$home/.vim/vimrc #用户vim配置文件.