命令
删除(剪贴)
行删除(剪贴)
D:(相当于 d$
) 删除当前光标到行尾
d^:删至行首
dd :删除当前行
d**n**G: 删除第n行到当前行
dG :删除当前行到最后一行
S :删除当前行,并处于可编辑状态
C :删除到行尾,并处于可编辑状态
:n,m d:将第n行到第m行的内容删除
字符删除(剪贴)
x向后删除一个字符
n**x向后删除**n个字符
X向前删除一个字符
n**X向后删除**n个字符
s 删除当前光标所在字符,并处于可编辑状态
i 在光标之前插入
a 在光标之后插入
单词删除(剪贴)
diw 删除光标所在的单词,不包括空白字符
daw 删除光标所在的单词,包括空白字符
dw 当当前光标位置删除到下一个单词词首
n**dw或**n**dW 删除光标处开始及最后的**n-1个词
复制粘贴
yy 复制当前行
n**yy 复制从当前行开始的**n行
y**n**w 复制n个单词
y**n**l 复制n个字符
y$ 复制当前光标至行尾处
p(小写) 粘贴到光标之后
P(大写) 粘贴到光标之前
撤销及重复
u 撤销前次操作
ctrl+r 重复前次操作
:e! 文档还原到最原始的状态
搜索
/str 从光标位置向下搜索str
?str 从光标位置向上搜索str
n 查找下一个
N 查找上一个
替换
格式:
:[range]s/from/to/[flags]
[range] n,m
不写range:默认为光标所在的行
n:一个数字 代表第n
行
n,m:两个数字,表范围 n
到m
行(n、m可以用.(光标所在的行)
、$(最后一行)
表示)
%:所有行(与 1,$ 等价)
[flags]
无:只对指定范围内的第一个匹配项进行替换。
g :对指定范围内的所有匹配项进行替换。
c :c是confirm的缩写,在替换前请求用户确认。
e :忽略执行过程中的错误。
例子
:s/regexp/replacement/ 替换当前行第一个匹配
:s/regexp/replacement/g 替换当前行所有匹配
:n,$s/regexp/replacement/ 替换第n行到最后行一中每一行的第一个匹配(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:n,$s/regexp/replacement/g 替换第n行到最后行一中每一行中所有匹配
:%s/regexp/replacement/ (等同于 :g/regexp/s//replacement/) 替换每一行的第一个匹配
:%s/regexp/replacement/g (等同于 - :g/regexp/s//replacement/g) 替换每一行的所有匹配
移动
单词
w:下一个单词第一字符
W:下一个长单词第一字符
e:下一个单词最后字符
E:下一个长单词最后字符
b:前一单词第一字符
B:前一长单词第一字符
ge:前一个单词的最后一个字符
行
0:到行首
$:到行尾
gg:到第一行
G:到最后一行
n**G:到第**n行
句
(:到句首
):到句尾
段
{:到段首
}:到段尾
屏幕
ctrl+u:向上滚动半屏
ctrl+d:向下滚动半屏
PgUp:同ctrl+b 向上滚动一屏
PgDn:同ctrl+f 向下滚动一屏
多行拷贝移动
:n,m co p:将n行到m行之间的内容拷贝到第p行下
:n1,n2 m p:将n1行到n2行之间的内容移动到第p行下
退出保存
:w[!][filename]: 保存 !
表示强制保存 filename
表示另存为filename
:n,m w filename :将n行到m行的内容另存为filename
:q[!]:退出 !表示强制退出
:qw[!][filename]: 保存并退出 !
表示强制保存并退出 filename
表示另存为filename,并退出
其他
:!command:执行shell命令command
:n,m w!command:将文件中n行到m行的内容作为command的输入并执行,若不指定n,m,则代表将整个文件内容作为command的输入执行
:r!command:将命令command的输出结果放到当前行
:set nu:显示行号
:set nonu:取消行号
:r filename:把filename文件的内容插入到当前光标所在位置下
ctrl+g:当前行信息
g ctrl+g:字数统计