2019独角兽企业重金招聘Python工程师标准>>>
i/a | 从光标所在位置之前、之后开始插入 |
I/A | 光标移到行首、行尾,然后开始插入 |
o/O | 光标所在行的下、上新插入一行,然后开始插入 |
普通模式下光标移动:
G | 光标移动到文件最后一行的行首 |
nG | 相对文件的开始的第n行开始,如:1G光标移到第1行开始 |
$ | 光标移到当前所在行的行尾 |
n$ | 光标移到第n行的行尾 |
0 | 光标移到当前所在行的行首 |
n+/n- | 光标上移或下移n行 |
^ | 光标移到所在行的第一个非空格字符 |
h/j/k/l | 光标左、下、上、右移动 |
H | 光标移至当前屏幕左上角 |
M | 光标移至当前屏幕显示文件的中间行行首 |
L | 光标移到当前屏幕最后一行行首 |
普通模式下替换删除:
rc | 用字符c替换光标所指向的当前字符 |
nrc | 用字符c替换从光标开始的n个字符 |
x | 删除光标所在处的字符 |
nx | 删除从光标所在位置开始向右的n个字符 |
dw | 删除一个单词。若光标处在某个词中间,则从光标所在位置开始删除至词尾并连同空格 |
ndw | 删除n个指定的单词 |
db | 删除光标所在位置之前的一个词 |
ndb | 删除光标所在位置之前的n个词 |
dd / D | 删除光标所在整行 |
ndd | 删除光标所在行及之后的n-1行 |
dG | 删除光标所在位置至文件尾的所有内容 |
d1G | 删除光标所在位置到文件首的所有内容 |
d$ | 删除光标所在位置到当前行的末尾的内容 |
d0 | 删除光标所在位置到当前行的开始的内容 |
普通模式下的复制和粘贴:
yy | 将当前行的内容复制到缓冲区 |
nyy | 将当前开始的n行内容复制到缓冲区 |
yG | 将当前光标所在位置到最后一行的所有内容复制到缓冲区 |
y1G | 将当前光标所在位置到第1行的所有内容复制到缓冲区 |
y$ | 将当前光标所在位置到当前行的末尾的内容复制到缓冲区 |
y0 | 将当前光标所在位置到当前行的开始的内容复制到缓冲区 |
p | 将缓冲区的内容写出到光标所在位置 |
普通模式下的搜索字符串:
/str | 向右移动到有str的地方 |
?str | 往左移动到有str的地方 |
n | 向相同的方向移动到下一个有str的地方 |
N | 向相反的方向移动到下一个有str的地方 |
普通模式下的撤销和重复:
u | 撤销前一次操作 |
普通模式下退出Vi:
ZZ | 存盘退出 |
ZQ | 不保存退出 |
命令模式下的跳行:
:n | 直接输入要移动到的行号即可实现跳行 |
命令模式下搜索和替换字符串:
:/str/ | 从当前光标开始往右移动到有str的地方 |
:?str? | 从当前光标开始往左移动到有str的地方 |
:/str/w file | 将包含有str的行写到文件file中 |
:/str1/,/str2/w file | 将从str1开始到str2结束的内容写入file文件中 |
:s/str1/str2/ | 将找到的第1个str1替换为str2 |
:s/str1/str2/g | 将找到的所有str1替换为str2 |
:n1, n2s/str1/str2/g | 将从n1~n2行找到的所有str1替换为str2 |
:1,.s/str1/str2/g | 将第1行到当前位置的所有str1替换为str2 |
:.,$s/str1/str2/g | 将从当前位置到结尾的所有str1替换为str2 |
:1,$s/str1/str2/gc | 将从第1行到最后一行的所有str1替换为str2,并在替换前询问 |
命令模式下文本复制、移动、删除:
:n1,n2 co n3 | 把从n1开始到n2为止的所有行的内容复制到n3行的后面 |
:n1,n2 m n3 | 把从n1开始到n2为止的所有行的内容移动到n3行的后面 |
:d | 删除当前行 |
:nd | 删除从当前所开始的n行 |
:n1,n2 d | 删除从n1开始到n2为止的所有行的内容 |
:.,$d | 删除从当前行到结尾的所有内容 |
:/str1/,/str2/d | 删除从str1开始到str2为止的所有内容 |
命令模式下的文件相关命令:
:w | 将当前编辑的内容存盘 |
:w file | 将当前编辑的内容写到file文件中 |
:n1,n2w file | 将从n1开始到n2结束的行写入到file中 |
:nw file | 将第n行写入到file中 |
:1,.w file | 将从第1行到当前光标位置的所有内容写入到file中 |
:.,$w file | 将从当前光标位置到文件结尾的所有内容写入到file中 |
:r file | 找开另一个文件file |
:e file | 新建file文件 |
:f file | 把当前文件改名为file |
命令模式下执行shell命令:
:!Cmd | 运行Shell命令Cmd |
:n1,n2 w ! Cmd | 将n1~n2行的内容作为Cmd命令的输入,如果不指定,则将整个文件作为命令的输入 |
:r ! Cmd | 将命令运行结果写入当前行位置 |
命令模式下退出Vi
:
:q | 退出Vi |
:wq | 退出保存Vi |
:q! | 不保存退出Vi |
命令模式下设置Vi环境
:
:set autoindent | 缩进每一行,使之与前一行相同。 |
:set noautoindent | 取消缩进 |
:set number | 在编辑文件时显示行号 |
:set nonumber | 不显示行号 |
:set ruler | 在屏幕底部显示光标所在的行、列位置 |
:set noruler | 不显示光标所在行、列位置 |
:set tabstop=value | 设置显示制表符空格字符个数 |
:set wrapmargin=value | 设置显示器的右页边。当输入进入所设置的页边时,编辑器自动回车换行 |
:set | 显示设置的所有环境选项 |
:set all | 显示所有可以设置的环境选项 |