VxWorks的Host/Kernel Shell都支持两种Mode:Input Mode、Edit Mode。默认使用的C解释器就是在Input Mode下工作的,而Edit Mode又支持两种风格:vi和emacs(低一些的版本只支持vi)。vi,Linux中最常用的文本编辑器。
今天一起来看看VxWorks里的vi命令怎么用
先复习一个Shell在Input Mode里的命令: h
然后添加组件INCLUDE_SHELL_VI_MODE
启动VxWorks后,Shell默认处于Input Mode,要想进入Edit Mode,只需在Shell里点击键盘的ESC键;而在Edit Mode里点击Enter键,就回到Input Mode了
目前VxWorks 6.9里支持的vi命令有:
移动与搜索命令
<n>代表1-9的数字,不使用则表示1
- <n>G 跳转到history的第<n>条命令
- /<s> 在history中,向后搜索包含字符串<s>的命令
- ?<s> 在history中,向前搜索包含字符串<s>的命令
- n 重复上一次搜索
- N 反方向重复上一次搜索
- <n>k 在history中,向后搜索第<n>条命令
- <n>- 在history中,向后搜索第<n>条命令
- <n>j 在history中,向前搜索第<n>条命令
- <n>+ 在history中,向前搜索第<n>条命令
- <n>h 将光标向左移动<n>个字符
- CTRL-H 将光标向左移动1个字符
- <n>l 将光标向右移动<n>个字符
- <n>SPACE 将光标向右移动<n>个字符
- <n>b 将光标向左移动<n>个单词,标点也算单词,例如"abc_def%^gh ijk@lm"为8个单词
- <n>B 将光标向左移动<n>个由空格间隔的单词,例如"abc_def%^gh ijk@lm"为2个单词
- <n>w 将光标向右移动<n>个单词
- <n>W 将光标向右移动<n>个由空格间隔的单词
- <n>e 将光标移动到右侧第<n>个单词尾部
- <n>E 将光标移动到右侧第<n>个由空格间隔的单词尾部
- f<c> 将光标移动到右侧第一个字符<c>,未找到则移动到行尾
- t<c> 将光标移动到右侧第一个字符<c>,未找到则移动到行尾
- F<c> 将光标移动到左侧第一个字符<c>,未找到则移动到行首
- T<c> 将光标移动到左侧第一个字符<c>,未找到则移动到行首
- $ 将光标移动到行尾
- 0 将光标移动到行首
- ^ 将光标移动到行首第一个非空格字符
插入命令
- a 在光标字符后切换到Input Mode
- A 将光标移动到行尾并切换到Input Mode
- c SPACE 删除光标位置字符并切换到Input Mode
- cl 删除光标位置字符并切换到Input Mode
- s 删除光标位置字符并切换到Input Mode
- cw 从光标位置删除到当前单词尾部并切换到Input Mode
- cc 删除整行并切换到Input Mode
- S 删除整行并切换到Input Mode
- c$ 从光标位置删除到行尾并切换到Input Mode
- C 从光标位置删除到行尾并切换到Input Mode
- i 在光标字符前切换到Input Mode
- I 将光标移动到行首并切换到Input Mode
- R 切换到Input Mode并且新输入字符覆盖原有字符
编辑命令
- <n>r<c> 使用字符<c>替换后面的<n>个字符
- <n>x 删除光标右侧<n>个字符(含光标位置)
- <n>X 删除光标左侧<n>个字符
- d SPACE 删除光标位置字符
- dl 删除光标位置字符
- dw 从光标位置删除到当前单词尾部
- dd 删除整行
- d$ 从光标位置删除到行尾
- D 从光标位置删除到行尾
- p 将最后一次删除内容复制到光标位置后面
- P 将最后一次删除内容复制到光标位置前面
- u 撤销最后一次操作
- U 撤销最后一次操作
- ~ 将光标位置的字母切换大小写并移动光标到下一个字符
另外还有一些控制命令
- CTRL+U 删除整行并切换到Input Mode
- CTRL+D 自动补全当前命令,如有多个,则全部列举
- CTRL+W 自动补全当前命令,如有多个,则全部列举
- Tab 自动补全当前命令
- Enter 提交当前命令并切换到Input Mode
- CTRL+L 再次输入当前行
- CTRL+X 重启
是不是有点多?那就先记住这几条
- CTRL+X 重启
- ESC 进入Edit Mode
- k 上一条命令
- Enter 执行当前命令并回到Input Mode
这正是:
Shell文本可编辑,进入vi很容易。
多个命令不好记,先用k键应应急。