启动
vi
退出
q
强制退出
q!
vi foo.txt
创建一个文件,启动后,是命令模式,是不能编辑的,键盘上的按键对应不同的命令。
按键盘上的i,进入插入模式
:w
按键 | 光标动作 |
---|---|
L | 右移一位 |
H | 左移一位 |
J | 下移一行 |
K | 上移一行 |
数字 0 | 至本行开头 |
^ | 至本行第一个非空字符 |
$ | 至本行的末尾 |
w | 至下一个单词或标点的开头 |
W | 至下一个单词的开头,越过标点 |
b | 至上一个单词或标点的开头 |
B | 至上一个单词的开头,越过标点 |
Ctrl-F或Page Down | 下一页 |
Ctrl-B或Page UP | 上翻一页 |
number-shift-g | 将光标移动到第n行 |
G | 移动到文件最后一行 |
A | 在文件末尾添加 |
o | 在当前行的上方加入一行 |
O | 在当前行的下方加入行 |
u | 撤销操作(vi只可以撤销一步) |
x | 删除当前字符 |
3x | 删除3个字符 |
dd | 删除当前行 |
5dd | 删除5行 |
dW | 当前字符到下一个字符的起始 |
d$ | 当前字符到行的末尾 |
d0 | 当前字符到行的起始 |
d^ | 当前字符到第一个非空字符 |
dG | 当前行到末尾 |
d20G | 当前行到文件第20行 |
dd就是剪切操作
复制命令 | |
---|---|
yy | 当前行 |
5yy | 5行 |
yW | 当前字符到下一个单词开始 |
y$ | 当前字符到行尾 |
y0 | 当前字符到行首 |
y^ | 当前字符到当前行的第一个非空字符 |
yG | 当前行到文件结尾 |
y20G | 当前行到第20行 |
p命令将复制的内容粘贴到当前行的下方,P命令将复制的内容粘贴到当前行的上方。
将光标所在行与下一行合并,J
f在行内进行搜索,并将光标移至搜索到的下一个指定字符。
“/”搜索单词,命令n去找下一个
使用ex命令来执行几行之内或整个文件的搜索和替换操作。
:%s /Line/line/gc
组成 | 含义 |
---|---|
: | 分号用于启动一条ex命令 |
% | 确定了操作作用的范围。%代表从第一行到最后一行。还可以表示为1,5.。或者是1,$.从第一行到最后一行。如果不指定,知识适用于第一行。 |
s | 指定了具体的操作,本次为替换操作 |
/Line/line | 搜索和替换的文本 |
g | 代指global,如果缺失,那么只替换每一行第一个 |
c | 在每次替换前,向用户发出询问 |
加入c后出现
他们大的功能是
功能键 | 行为 |
---|---|
y | 执行替换 |
n | 跳过本次替换 |
a | 执行此次替换和之后的所有替换 |
q | 停止替换 |
l | 执行此次替换后退出 |
Ctrl-E,Ctrl-Y | 分别是向下滚动和向上滚动 |
vi file1 file2 file3 ...
切换下一个文件
:n
切换上一个文件
:N
查看正在编辑的文件列表
:buffers
切换文件
:buffer 2
:e ls-output.txt
将光标移动到插入位置
:r foo.txt