|
捐赠?
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 | 向后移到上一个单词的首字符处
| | W | 与 w 相同;忽略标点
| | E | 与 e 相同;忽略标点
| | B | 与 b 相同;忽略标点
| | ) | 向前移到下一个句子的开头
| | ( | 向后移到上一个句子的开头
| | } | 向前移到下一个段落的开头
| | { | 向后移到上一个段落的开头
| | 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)
| |
| n G | 跳转到第 n 行
| | 1G | 跳转到编辑缓冲区的第一行
| | gg | 跳转到编辑缓冲区的第一行
| | G | 跳转到编辑缓冲区的最后一行
| | :map g 1G | 定义宏,使 g 与 1G 作用相同
| | :n | 跳转到第 n 行
| | :1 | 跳转到编辑缓冲区的第一行
| | :$ | 跳转到编辑缓冲区的最后一行
|
插入 (Inserting)
| |
| i | 进入插入模式:在光标位置之前插入
| | a | 进入插入模式:在光标位置之后插入
| | I | 进入插入模式:在当前行的行首插入
| | A | 进入插入模式:在当前行的行尾插入
| | o | 进入插入模式:在当前行下方开一新行
| | O | 进入插入模式:在当前行上方开一新行
| | <Escape> | 离开插入模式,返回命令模式
|
修改 (Making Changes)
| |
| r | 精确替换 1 个字符(不进入输入模式)
| | R | 以覆盖方式输入替换
| | s | 以插入方式替换 1 个字符
| | C | 以插入方式替换从光标到行尾的内容
| | cc | 以插入方式替换整个当前行
| | S | 以插入方式替换整个当前行
| | c move | 以插入方式替换从光标到 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 | 删除整个当前行
| | d move | 删除从光标到 move 所指位置的内容
| | dG | 删除从当前行到编辑缓冲区末尾的内容
| | d1G | 删除从当前行到编辑缓冲区开头的内容
| | :line d | 删除指定行
| | :line,line d | 删除指定范围
|
删除:常用组合 (Deleting: Useful Combinations)
| |
| dw | 删除 1 个单词
| | d n w | 删除 n 个单词
| | d n W | 删除 n 个单词(忽略标点)
| | db | 向后删除 1 个单词
| | d n ) | 删除 n 个句子
| | d n } | 删除 n 个段落
| | dG | 删除从当前行到编辑缓冲区末尾的内容
| | dgg | 删除从当前行到编辑缓冲区开头的内容
| | d1G | 删除从当前行到编辑缓冲区开头的内容
|
复制最近一次删除 (Copying the Last Deletion)
| |
| p | 复制缓冲区内容;在光标之后/之下插入
| | P | 复制缓冲区内容;在光标之前/之上插入
| | xp | 交换两个字符
| | deep | 交换两个单词(从第一个单词的左侧开始)
| | ddp | 交换两行
| | "1pu.u.u ... | 依次调出一次次的删除内容
|
复制与移动行 (Copying and Moving Lines)
| |
| :line co target | 复制指定行;插入到目标行之下
| | :line,line co target | 复制指定范围;插入到目标行之下
| | :line m target | 移动指定行;插入到目标行之下
| | :line,line m target | 移动指定范围;插入到目标行之下
|
拉取 (Yanking)
| |
| y move | 拉取从光标到 move 所指位置的内容
| | yy | 拉取整个当前行
|
拉取:常用组合 (Yanking: Useful Combinations)
| |
| yw | 拉取 1 个单词
| | y n w | 拉取 n 个单词
| | y n W | 拉取 n 个单词(忽略标点)
| | yb | 向后拉取 1 个单词
| | y n ) | 拉取 n 个句子
| | y n } | 拉取 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)
| |
| :line r file | 将 file 的内容插入到指定行之后
| | :r file | 将 file 的内容插入到当前行之后
| | :line r !command | 将 command 的输出插入到指定行之后
| | :r !command | 将 command 的输出插入到当前行之后
| | :r !look pattern | 插入以指定模式开头的单词
|
使用 Shell 命令处理数据 (Using Shell Commands to Process Data)
| |
| n!!command | 对 n 行执行 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 long | 将 short 设为 long 的缩写
| | :ab | 显示当前所有缩写
| | :una short | 取消缩写 short
|
|