:set all 显示所有可以设置的选项
文本删除命令
dd 删除当前光标所有的文本行
#dd 删除#行文本
dw 从文本中删除一个单词
#dw 从文本中删除#个单词
x 删除光标所在的一个字符
#x 从文本中删除#个字符
D 删除当前行上光标后面的部分
:#,#d 例如,:12,37d 将删除第 12~37 行之间的所有文本,包括第 12 和 37 行
撤销命令
u 撤销。恢复最近一次的文本修改操作,即使已经移动了光标。在 Linux 系统中,再次使用撤
销命令将恢复更前一次的文本修改操作。在 BSD 的 vi 中,第 2 次撤销操作将撤销第一次撤销
操作,恢复第 1 次撤销前修改的文本
:redo 在 Linux 系统中,取消撤销操作恢复文本修改。在标准的 UNIX 系统中,第 2 个 u 命令
取消第 1 个 u 命令,结果就是一个“redo”
U 如果在修改后还没有将光标移出当前行,则可以撤销对当前行进行的所有的文本修改
向文本中添加文本
a(小写) 从光标的右侧开始插入文本
A(大写) 从当前行的行末开始添加文本
i(小写) 从光标的左侧开始插入文本
I(大写) 从当前行的行首插入文本
o(小写) 在光标的下面打开(或插入)一个新行
O(大写) 在光标的上面打开一个新行
:#r filename 例如,:8r report.old 读取文件 report.old,并将它的内容放到当前文件的第 8 行
之后
Esc 无论使用什么命令进入了追加/插入模式,都可以通过按 Esc 键离开追加模式返回到 vi 的
命令模式
Ctrl+V 允许输入控制字符。按 Ctrl+V 键后再按回车键将把 Ctrl+M 插入到文件中
在文件中修改文本
cw 仅仅修改光标处的单词(删除单词,然后进入追加模式中,以在被删除单词的位置添加文本)
s(小写) 替换单个字符
S(大写) 替换整行文本
cc 替换整行文本(同 S)
r 用输入的下一个字符替代当前光标处的字符,并自动返回到命令模式
R 将编辑器放到覆盖模式,用输入的字符来逐个替换光标处的字符
C(大写) 修改行上从光标到行末之间的文本
ct# 修改行上从光标到前向第 1 个目标字符之间的文本。例如 ctY 将删除当前行上从光标到向
前第 1 个字符 Y 之间的所有文本,并进入追加模式以在删除文本的位置添加文本
cf# 修改行上从光标到前向第 1 个目标字符之间的文本(包括目标字符)。例如 cfY 将删除当
前行上从光标到向前第 1 个字符 Y 之间(包括 Y)的所有文本,并进入追加模式以在删除文本