捐赠?

Harley Hahn
个人主页

给 Harley
发送留言


来自 Harley Hahn 的
个人寄语

Unix 之书
主页

搜索

章节列表

目录

插图列表

各章...
   1   2   3
   4   5   6
   7   8   9
  10  11  12
  13  14  15
  16  17  18
  19  20  21
  22  23  24
  25  26

术语表

各附录...
  A  B  C
  D  E  F
  G  H

命令
摘要...

• 按字母顺序
• 按类别

Unix-Linux
年表

互联网
资源

错误与
勘误

推荐语


教师
与学生
资料...

主页
与概述

练习
与答案

Unix 模范
课程与
课程大纲

教师用
PowerPoint 文件

附录 C...

vi 命令摘要 (Summary of vi Commands)

本附录汇总了本书所讲解的全部 vi 命令。想了解更多信息, 请参见第 22 章,我在该章对 vi 进行了详细讨论。

启动 vi (Starting vi)

vi file启动 vi,编辑指定文件
vi -R file以只读方式启动 vi,编辑指定文件
view file以只读方式启动 vi,编辑指定文件
vim file启动 Vim,编辑指定文件
vim -C file以兼容模式启动 vi

退出 vi (Stopping vi)

:q!不保存数据直接退出
ZZ保存数据并退出
:wq保存数据并退出
:x保存数据并退出

系统故障后的恢复 (Recovering After System Failure)

vi -r显示可恢复文件的名称
vi -r file启动 vi,恢复指定文件

用于改正的按键 (Keys to Use to Make Corrections)

<Backspace>/删除刚输入的最后一个字符
^W删除刚输入的最后一个单词
^X/^U删除整行

控制显示 (Controlling the Display)

^L重新显示当前屏幕
:set number显示内部行号
:set nonumber不显示内部行号

移动光标 (Moving the Cursor)

h光标左移一格
j光标下移一格
k光标上移一格
l光标右移一格
<Left>光标左移一格
<Down>光标下移一格
<Up>光标上移一格
<Right>光标右移一格
<Backspace>光标左移一格
<Space>光标右移一格
-光标移到上一行的行首
+光标移到下一行的行首
<Return>光标移到下一行的行首
0光标移到当前行的行首
$光标移到当前行的行尾
^光标移到当前行第一个非空白/非制表符字符处
w向前移到下一个单词的首字符处
e向前移到下一个单词的末字符处
b向后移到上一个单词的首字符处
Ww 相同;忽略标点
Ee 相同;忽略标点
Bb 相同;忽略标点
)向前移到下一个句子的开头
(向后移到上一个句子的开头
}向前移到下一个段落的开头
{向后移到上一个段落的开头
H光标移到顶行
M光标移到中间行
L光标移到末行

在编辑缓冲区中移动 (Moving Through the Editing Buffer)

^F向下(向前)翻一屏
^B向上(向后)翻一屏
n^F向下翻 n
n^B向上翻 n
^D向下翻半屏
^U向上翻半屏
n^D向下移动 n
n^U向上移动 n

搜索模式 (Searching for a Pattern)

/regex向前搜索指定的正则表达式
/重复向前搜索上一个模式
?regex向后搜索指定的正则表达式
?重复向后搜索上一个模式
n重复上一个 /? 命令,方向相同
N重复上一个 /? 命令,方向相反

正则表达式中使用的特殊字符 (Special Characters to Use in Regular Expressions)

.匹配除换行符外的任意单个字符
*匹配前一个字符出现零次或多次
^匹配行首
$匹配行尾
\<匹配单词开头
\>匹配单词结尾
[ ]匹配其中列出的某一个字符
[^ ] 匹配未包含在内的任意字符
\使后面的符号按字面意义解释

行号 (Line Numbers)

nG跳转到第 n
1G跳转到编辑缓冲区的第一行
gg跳转到编辑缓冲区的第一行
G跳转到编辑缓冲区的最后一行
:map g 1G定义宏,使 g1G 作用相同
:n跳转到第 n
:1跳转到编辑缓冲区的第一行
:$跳转到编辑缓冲区的最后一行

插入 (Inserting)

i进入插入模式:在光标位置之前插入
a进入插入模式:在光标位置之后插入
I进入插入模式:在当前行的行首插入
A进入插入模式:在当前行的行尾插入
o进入插入模式:在当前行下方开一新行
O进入插入模式:在当前行上方开一新行
<Escape>离开插入模式,返回命令模式

修改 (Making Changes)

r精确替换 1 个字符(不进入输入模式)
R以覆盖方式输入替换
s以插入方式替换 1 个字符
C以插入方式替换从光标到行尾的内容
cc以插入方式替换整个当前行
S以插入方式替换整个当前行
cmove以插入方式替换从光标到 move 所指位置的内容
~改变字母的大小写

替换模式 (Replacing a Pattern)

:s/pattern/replace/替换,当前行
:line s/pattern/replace/替换,指定行
:line,line s/pattern/replace/替换,指定范围
:%s/pattern/replace/替换,所有行

说明:

在命令末尾,使用 c 请求逐个确认,使用 g(global,全局)则替换每行中的所有匹配项。

指定行号时,可以使用:
  一个实际的数字
  .(句点)表示当前行
  1 表示编辑缓冲区的第一行
  $ 表示编辑缓冲区的最后一行

撤销或重复修改 (Undoing or Repeating a Change)

u撤销上一个修改编辑缓冲区的命令
U恢复当前行
.重复上一个修改编辑缓冲区的命令

断行与合并行 (Breaking and Joining Lines)

r把当前行断为两行(用换行符替换该字符)
J把当前行与下一行合并为一条长行
:set wm=n在距右边界 n 个字符位置内自动换行

删除 (Deleting)

x删除光标处的字符
X删除光标左侧的字符
D删除从光标到行尾的内容
dd删除整个当前行
dmove删除从光标到 move 所指位置的内容
dG删除从当前行到编辑缓冲区末尾的内容
d1G删除从当前行到编辑缓冲区开头的内容
:line  d删除指定行
:line,lined删除指定范围

删除:常用组合 (Deleting: Useful Combinations)

dw删除 1 个单词
dnw删除 n 个单词
dnW删除 n 个单词(忽略标点)
db向后删除 1 个单词
dn)删除 n 个句子
dn}删除 n 个段落
dG删除从当前行到编辑缓冲区末尾的内容
dgg删除从当前行到编辑缓冲区开头的内容
d1G删除从当前行到编辑缓冲区开头的内容

复制最近一次删除 (Copying the Last Deletion)

p复制缓冲区内容;在光标之后/之下插入
P复制缓冲区内容;在光标之前/之上插入
xp交换两个字符
deep交换两个单词(从第一个单词的左侧开始)
ddp交换两行
"1pu.u.u ...依次调出一次次的删除内容

复制与移动行 (Copying and Moving Lines)

:linecotarget复制指定行;插入到目标行之下
:line,linecotarget复制指定范围;插入到目标行之下
:linemtarget移动指定行;插入到目标行之下
:line,linemtarget移动指定范围;插入到目标行之下

拉取 (Yanking)

ymove拉取从光标到 move 所指位置的内容
yy拉取整个当前行

拉取:常用组合 (Yanking: Useful Combinations)

yw拉取 1 个单词
ynw拉取 n 个单词
ynW拉取 n 个单词(忽略标点)
yb向后拉取 1 个单词
yn)拉取 n 个句子
yn}拉取 n 个段落
yG拉取从当前行到编辑缓冲区末尾的内容
ygg拉取从当前行到编辑缓冲区开头的内容
y1G拉取从当前行到编辑缓冲区开头的内容

执行 Shell 命令 (Executing Shell Commands)

:!command暂停 vi,执行指定的 Shell 命令
:!!暂停 vi,执行上一条 Shell 命令
:sh暂停 vi,启动一个 Shell
:!csh暂停 vi,启动一个新的 C-Shell

读取数据到编辑缓冲区 (Reading Data Into Editing Buffer)

:liner filefile 的内容插入到指定行之后
:r filefile 的内容插入到当前行之后
:liner !commandcommand 的输出插入到指定行之后
:r !commandcommand 的输出插入到当前行之后
:r !look  pattern插入以指定模式开头的单词

使用 Shell 命令处理数据 (Using Shell Commands to Process Data)

n!!commandn 行执行 command
!move command对从光标到 move 所指位置的范围执行 command
!move fmt将从光标到 move 所指位置的行重新排版

写入数据 (Writing Data)

:w将数据写入原文件
:w file将数据写入指定文件
:w>> file将数据追加到指定文件

编辑期间更换文件 (Changing the File While Editing)

:e file编辑指定文件
:e! file编辑指定文件,跳过自动检查

缩写 (Abbreviations)

:ab short longshort 设为 long 的缩写
:ab显示当前所有缩写
:una short取消缩写 short

跳至页首