《学习vi和Vim编辑器(中文版)》的原文摘录
0:移到每行的开头
$:移到每行的结尾 (查看原文 )
w:前进一个单词
b:退后一个单词 (查看原文 )
c:更改命令。可以和很多命令结合使用。例如cw , c2b , c$等等。 (查看原文 )
r把一个字符替换成另一个,结束后仍然保持命令模式。 (查看原文 )
想要重复相同的编辑命令时,可以使用重复命令——. (查看原文 )
如果出了错误操作,可以撤销上一命令。只要按下u即可,光标不需要在原来下命令时所在的位置。 (查看原文 )
o:在光标所在位置的下一行打开新行
O:在光标所在位置的上一行打开新行 (查看原文 )
当你需要将两行合并成一行时,可将光标移到第一行的任何地方,然后按J合并两行。 (查看原文 )
Ctrl + F : 往前滚动一屏
Ctrl + B : 往后滚动一屏 (查看原文 )
H : 移到屏幕顶端的行
M: 移到屏幕中间的行
L: 移到屏幕底部的行 (查看原文 )
vu + file 在最后一行打开file (查看原文 )
vi -R file
或者
view file 用只读模式打开文件 (查看原文 )
若没有电力公司供电,根本不可能使用计算机完成任何工作 (查看原文 )
h:左移,一个空格
j :下移,一行
k:上移,一行
l :右移,一个空格
可以在移动命令的前面加数字,表示重复几次 (查看原文 )
选项:
:set wm=10 设置页面右边距为10个字符
:set nu 显示行号
行内移动命令:
0:移动到行首
$:移动到行尾
按文本块移动:
w:把光标向前移动一个单词,并把符号和标点作为单词处理
W:把光标向前移动一个单词,并不把符号和标点作为单词处理
b:把光标向后移动一个单词,并把符号和标点作为单词处理
B:把光标向后移动一个单词,并不把符号和标点作为单词处理
移动命令的前面也可以带参数 (查看原文 )
vi命令的一般格式:
(命令)(文本目标)
命令:c命令(修改)、d命令(删除)、y命令(复制)
文件目标:是移动命令
移动命令可以带数字参数,因此也可以把数字加到c、d、e命令的文本目标的前面。
(命令)(数字)(文本目标)
或者等同于:
(数字)(命令)(文本目标)
数字和命令是可选的
修改文本:可以把c命令与移动命令结合在一起使用。移动命令用来指明c命令所作用的文本对象。
cc:替换整个当前行
cw:到单词的尾部
c2b:后退两个单词
C、c$:到行尾
c0:到行首
r:替换光标处的字符
R:进入改写模式。最多只能改写一整行;当输入RETURN时,vi就会打开一个新行,并使你处于插入模式。
s:替换单个字符,并进入插入模式
S:允许改变整行,并进入插入模式,前面的计数表示将要替换的行数
~:大小写转换
dw:从光标开始的位置对该单词进行删除,总是删除本行中下一个单词前面的空格
de:同dw,但只删除到单词的尾部,保留单词之间的空格
dE:同dw,但只删除到单词的尾部,并且包括标点符号
db:向后删除
D、d$:删除到行尾
d0:删除到行首
dd:专用命令,按行删除
x:专用命令,删除光标所在位置的字符
X:专用命令,删除光标前面的那个字符
删错了文本并想恢复它:
u:取消最近一次的操作
U:恢复当前行到原来的状态 (查看原文 )
p:把位于缓冲区中的文本粘贴到光标位置的后面
P:粘贴到光标的前面
xp:调换两个字母的顺序(删除字符然后把它粘贴到光标的后面)
jp:把光标移动到下一行,然后粘贴到光标所在行的上方 (查看原文 )
Y、yy:复制整行 (查看原文 )
重复:
句点(.):重复上一次操作
CTRL-@:重复最近的插入操作
插入文本的常用方法:
A:在当前行的尾部添加文本
I:在行首插入文本
o:在光标所在行的下面新建一行,等待输入文本
O:在光标所在行的上面新建一行,等待输入文本
s:使用输入的文本替换光标所在位置的字符
S:使用输入的文本替换当前行
R:使用新字符覆盖现有字符
插入命令的数字参数:
通过数字前缀,可以使用i、I、a和A命令插入一排下划线或替换字符。
50i*ESC:插入50个星号
25a*-ESC:追加50个字符
ea:在在单词的结尾追加新文本
J:合并两行 (查看原文 )
滚动屏幕:
^F:向前滚动一屏
^B:向后滚动一屏
^D:向前滚动半屏(下)
^U:向后滚动半屏(上)
(^符号表示CTRL键,^F表示按下CTRL键后再同时按下f键)
使用z重新定位屏幕:如果想在向上或向下滚动屏幕时仍把光标保持在原来所在的行,则可使用z命令。
z RETURN:把当前行移动到屏幕顶部并滚动
z.:把当前行移动到屏幕中央并滚动
z-:把当前行移动到屏幕底部并滚动
200z RETURN:将移动第200行到屏幕的顶部
刷新屏幕:^L
在屏幕内移动:
H:移动到起始点--屏幕首行
M:移动到屏幕的中间行
L:移动到屏幕的末行
nH:移动到屏幕首行下面的第n行
nL:移动到屏幕末行上面的第n行 (查看原文 )