二、Linux下的vi编辑器

来源:互联网 发布:恒腾网络 福利待遇 编辑:程序博客网 时间:2024/04/30 10:22

嵌入式开发绝大部分时间是字符界面下进行的,基于宿主机+客户机的模式,一般都是用串口或网络远程登录到linux,笔者现在的学习环境就是模拟成这样,在win7下安装虚拟机软件VMware,新建虚拟机安装ubuntu11.10,然后在win7下借助secureCRT登录到虚拟机的linux.离开了图形界面(GUI),鼠标变的无用武之地了,此时键盘才是主角,所以掌握linux的常用命令是学习嵌入式的第一步。

 

第二步学习vi编辑器,一款优秀的字符界面的文本编辑器,常用于查看和修改文件(要熟练使用它,所以在以后的学习中用来编辑源代码)

1.       进入vi程序:

直接vi命令或vi 文件名(如果当前目录无此文件则新建一个空文件)

vi +n 文件名(n为要将光标定位到第n行,修改配置文件的时候经常用)

 

2.       vi编辑器的3种模式:指令行模式(Command Mode)、文本输入模式(Input Mode)、行末模式(Last line Mode)(关于这3种模式,刚开始笔者也很困惑,为什么要搞那么复杂,这是因为文本界面的交互只能通过键盘输入,这样的设计是很合情合理的)

3.       三种模式的切换关系如所示。

指令模式下输入  a、i、o、A、I、O,进入文本输入模式

文本输入模式下按ESC进入指令模式

指令模式下输入:进入末行模式

末行模式下指令错误则返回指令模式

 

 

4.       指令模式(Command Mode)

指令模式主要使用方向键移动光标位置进行文字的编辑,下面列出了常用的操作命令及含义。

0  -----光标移动至行首

0$ -----光标移动至行尾

h  -----光标左移一格

l  -----光标右移一格

j  -----光标下移一行

k  -----光标上移一行

$+A-----将光标移动到该行最后

PageDn -----向下移动一页

PageUp -----向上移动一页

d+方向键-----删除文字

dd -----删除整行

yy -----整行复制

p -----粘贴

r  -----修改光标所在的字符

x  -----删除光标所在的字符

ZZ -----保存退出

u  -----撤销

 

5.       文本输入模式(Input Mode)

在指令模式下(CommandMode)按a/A键、i/I键、o/O键进入文本模式,文本输入模式的命令及其含义如下所示。

a -----在光标后开始插入

A -----在行尾开始插入

i -----从光标所在位置前面开始插入

I -----从光标所在列的第一个非空白字元前面开始插入

o -----在光标所在列下新增一列并进入输入模式

O -----在光标所在列上方新增一列并进入输入模式

ESC -----返回命令行模式

助记:

iiiiii|aaaaaaa   -----|表示光标所在位置

 

IIIIIIIIline|AAAAAAA    -----line|表示光标所在行

 

OOOOOOOOOO

line|  -----line|表示光标所在行

oooooooooo

 

6.       末行模式(Last line Mode)

末行模式主要进行一些文字编辑辅助功能,比如字串搜索、替代、保存文件等操作。主要命令如下

:q -----结束Vi程序,如果文件有过修改,先保存文件

:q!-----强制退出Vi程序

:wq  -----保存修改并退出程序

:set nu -----设置行号

:w -----保存文件

/string -----从光标开始处向文件尾搜索string,N:在反方向上重复上一次搜索命令

或?string -----从光标开始处向文件尾搜索string,n下一个?前一个

对应?和/搜索都有:n原来方向下一个,N:在反方向上重复上一次搜索命令

:n,$s/string1/string2/g -----替换第 n 行开始到最后一行中每一行所有string1 为string2,n 为数字,若 n 为 .,表示从当前行开始到最后一行

 

一个很好的练习例子
1. 请在 /tmp 这个目录下建立一个名为 vitest 的目录;
2. 进入 vitest这个目录当中;
3. 将 /etc/passwd 拷贝到本目录底下;
4. 使用 vi 开启本目录下的passwd这个档案;
5. 在 vi 中设定一下行号;
6. 移动到第10行,向右移动 10 个字符,请问您看到什么目录?
7. 移动到第一行,并且向下搜寻一下user 这个字符串,请问他在第几行?
8. 接着下来,我要将 5到 20 行之间的 /bin 改为 /usr/bin ,并且一个一个挑选是否需要修改,如何下达指令?
9. 修改完之后,突然反悔了,要全部复原,有哪些方法?
10.我要复制 5到 15行这十行的内容,并且贴到最后一行之后;
11.删除 11 到 30 行之间的 10 行;
12.将这个文件另存成一个名为 passwd.new的文件;
13.去到第7 行,并且删除 15 个字符;
14.请问目前的文件有多少行与多少字符?
15.储存后离开吧!

整个的步骤可以如下所示:

1. mkdir /tmp/vitest
2. cd /tmp/vitest
3. cp /etc/passwd .
4. vi /tmp/vitest/passwd
5. : set nu
6. 先按下 10G ,再按下 30 + 向右键,会看到“/bin/sh”
7. 先按下 1G ,然后按下 /user 搜寻,会看到他在第 31 行!
8.:5,20s#/bin#/usr/bin#gc
9. (1)简单的方法可以一直按 u 回复到原始状态,(2)使用不储存离开 :q!之后,再重新读取一次该档案
10.5G 然后在 10yy 之后按下 G 到最后一行,再给他 p 贴上十行!
11.11G 之后,再给他10dd 即可删除 10 行了;
12.:w  passwd.new

13.7G 之后,再给他 15x 即可删除 15 个字符;
14.:w保存之后会显示

15.:wq!


原创粉丝点击