全部博文(26)
分类: LINUX
2014-02-08 21:43:11
本附录包含的是本书(([美]:《Unix&Linux大学教程》附录B,译,清华大学出版社,2010年))中所涉及的全部vi命令,更多的信息请参见第22章,这一章详细讨论了vi。
启动
vi file 启动vi,编辑指定的文件
vi –R file 以只读模式启动vi,编辑指定的文件
view file 以只读模式启动vi,编辑指定的文件
vim file 启动vim,编辑指定的文件
vim –C file 以兼容模式启动vi
停止
:q! 不保存数据而停止
ZZ 保存数据并停止
:wq 保存数据并停止
:x 保存数据并停止
系统故障后恢复
vi –r 显示可以恢复的文件的名称
vi –r file 启动vi,恢复指定的文件
修订键
^W 删除键入的最后一个单词
^X/^U 删除整行
:map g 1G 定义宏,使g和1G拥有相同效果
:n 跳转到行号n
:1 跳转到编辑缓冲区中的第一行
:$ 跳转到编辑缓冲区中的最后一行
插入
i 切换到插入模式:在光标位置前插入
a 切换到插入模式:在光标位置后插入
I 切换到插入模式:在当前行开头插入
A 切换到插入模式:在当前行末尾插入
o 切换到插入模式:打开当前行下面一行
O 切换到插入模式:打开当前行上面一行
<Escape> 离开插入模式,切换到命令模式
进行修改
r 只替换1个字符(不进入输入模式)
R 键入中进行替换
s 通过插入替换1个字符
C 通过插入从当前光标替换到行末
cc 通过插入替换整个当前行
S 通过插入替换整个当前行
cmove 通过插入从当前光标替换至move指定的位置
~ 改变字母的大小写
替换模式
:s/pattern/replace/ 替换当前行
:lines/pattern/replace/ 替换指定行
:line,lines/pattern/replace/ 替换指定范围
:%s/pattern/replace/ 替换全部行
在命令的末尾,使用c可以用来请求确认,g(global,全局)可以用来替换每行的全部匹配结果。指定行号时,可以使用一个实际数字,也可以使用.(句号)表示当前行,或者$(美元符号)表示编辑缓冲区的最后一行。数字1表示编辑缓冲区中的第一行。
撤销或重复改变
u 撤销修改编辑缓冲区的上一条命令
U 恢复当前行
. 重复修改编辑缓冲区的上一条命令
分隔和连接行
r
J 将当前行与下一行连接成一个长行
:set wm=n 在离右边缘n个位置时自动换行
删除
x 删除光标处字符
X 删除光标左边的字符
D 从当前光标删除到行尾
dd 删除整个当前行
dmove 从当行光标删除到move所指定的位置
dG 从当前行删除到编辑缓冲区的末尾
d1G 从当行前删除到编辑缓冲区的开头
lined 删除指定的行
:line,lined 删除指定的范围
删除:有用的组合
dw 删除1个单词
dnw 删除n个单词
dnW 删除n个单词(忽略标点符号)
db 向后删除1个单词
dn) 删除n个句子
dn} 删除n个段落
dG 从当前行删除到编辑缓冲区的末尾
dgg 从当前行删除到编辑缓冲区的开头
d1G 从当前行删除到编辑缓冲区的开头
复制上一次删除
p 复制缓冲区:插入到当前光标后面/下面
P 复制缓冲区:插入到当前光标前面/上面
xp 调换两个字符
deep 调换两个单词(从第一个单词的左边开始)
ddp 调换两行
''1pu.u.u... 恢复某一次删除
复制与移动行
:linecotarget 复制指定的行,在目标下面插入
:line,linecotarget 复制指定的范围,在目标下面插入
:linemtarget 移动指定的行,在目标下面插入
:line,linemtarget 移动指定的范围,在目标下面插入
接出
ymove 将当前光标接出到move
yy 接出整个当前行
接出:有用的组合
yw 接出1个单词
ynw 接出n个单词
ynW 接出n个单词(忽略标点符号)
yb 向后接出1个单词
yn) 接出n个句子
yn} 接出n个段落
yG 从当前行接出到编辑缓冲区的末尾
ygg 从当前行接出到编辑缓冲区的开头
y1G 从当前行接出到编辑缓冲区的开头
执行shell命令
:!command 暂停vi,执行指定的shell命令
:!! pause vi, 执行上一条shell命令
:sh 暂停vi,启动一个shell
:!csh 暂停vi,启动一个新的C-Shell
向编辑缓冲区内读入数据
:liner file 在指定行后插入file 的内容
:r file 在当前行后插入file 的内容
:liner !command 在指定行后插入command的输出
:r !command 在当前行后插入command的输出
:r !look pattern 插入以指定模式开头的内容
使用shell命令处理数据
n !!command 对第n行数据执行command
!move command 对当前光标至move所指定的位置的数据执行command
!move fmt 格式化当前光标到move所指定的行
写入数据
:w 将数据写入到原始文件
:w file 将数据写入到指定文件
:w>> file 将数据追加到指定文件
在编辑过程中改变文件
:e file 编辑指定的文件
:e! file 编辑指定的文件,忽略自动检查
缩写
:ab short long 设置short到long的缩写
:ab 显示当前的缩写
:una short 取消缩写short