vi 编辑器的使用

24
College of Information Science and Engineering Shandong Agricultural University VI 编编编编编编

Upload: cruz-bridges

Post on 02-Jan-2016

45 views

Category:

Documents


4 download

DESCRIPTION

College of Information Science and Engineering. VI 编辑器的使用. Shandong Agricultural University. 学习目标. 1. 了解关于 vi 的基本知识; 2. 熟悉 vi 的三种工作模式; 3 .掌握 vi 下的文本编辑方法; 4 .掌握 vi 操作的常用技巧。. 主要内容. VI 的三种工作模式 VI 的启动与保存退出 VI 的文本 编辑 其他模式下的操作. 系统配置文件、 shell 脚本文件等都是文本文件,编辑它们都要使用文本编辑器。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: VI 编辑器的使用

College of Information Science and Engineering

Shandong Agricultural University

VI编辑器的使用

Page 2: VI 编辑器的使用

2

1. 了解关于 vi 的基本知识;2. 熟悉 vi 的三种工作模式;3 .掌握 vi 下的文本编辑方法;4 .掌握 vi 操作的常用技巧。

学习目标

Page 3: VI 编辑器的使用

3

1. VI 的三种工作模式2. VI 的启动与保存退出3. VI 的文本编辑4. 其他模式下的操作

主要内容

Page 4: VI 编辑器的使用

4

系统配置文件、 shell脚本文件等都是文本文件,编辑它们都要使用文本编辑器。

在 Linux系统中有多种文本编辑器,其中既有字符界面如的 VI、 EMACAS等,也有图形界面的如“附件”菜单下的“文本编辑器( gedit)”等,用户可以根据自己的喜好选择使用。

学习 vi的方法:vi的命令太多且难以记忆,而实际上真

正经常使用的命令并不是太多,只要掌握几个关键的并加以适当练习很快就可上手使用 vi。

Page 5: VI 编辑器的使用

5

为什么选择 VI就使用的方便性而言,有比 vi更好的编辑器,还有图形化的 gedit,为什么还要用 vi?历史久远,功能强大,在有些情况下系统中能够找到的编辑器只有 vi;

没有图形支持的情况下,如终端远程连接到服务器或者嵌入式设备,修改或者编制代码或者查看文件就需要 vim,vi等工具了。

用户一旦熟悉后,使用非常方便;系统管理员使用正则表达式可以极大地提高工作效率,而学习 vi也是掌握正则表达式的有效途径。

Page 6: VI 编辑器的使用

6

1.VI 的三种工作模式 命令模式

启动 VI 默认进入命令模式。此时界面不能编辑,只能接受命令 ( 键入的命令是看不到的)

可进行文件的保存,退出,文本的删除、复制、搜索等操作。

输入模式(编辑模式)命令模式下用编辑类命令

i(sert),a(ppend) , o,s 等均可进入该模式。按 esc 返回命令模式。

底行命令模式实际上也是命令模式的一种,在命令模式下输入

冒号进入一个命令行,可显示地输入命令(所以有些书认为是两种工作模式)。

三种模式可自由切换,一般切换命令就是操作的英文单词的首字母

Page 7: VI 编辑器的使用

7

文本输入模式

命令模式(默认)

底行命令模式

按 ESC 键

按 A,I,S,C,O等可做不同插入操作,同时转换模式

按“:”键

命 令 执 行 后 自动 返 回 ( 除 退出命令)

三种模式间的转换关系

Page 8: VI 编辑器的使用

8

关于 VI 的版本 由于 vi 的版本不同,其命令格式、功能和用

法会有一些差别。多数发行版上安装的是传统vi 的增强版本 vim ( VI Improved )。输vi 命令可看到版本提示信息。

如果编辑模式下按方向键出字母,用whereis vi 查看会发现安装的一般是 Vim-tiny 。可再安装一下,执行:

sudo apt-get install vim

Page 9: VI 编辑器的使用

9

2.VI 的启动与保存退出【启动】

执行 vi 命令即可如: vi my.txt如果文件存在,则 vi 显示文件内容并等待用户

的命令。如果指定的文件不存在,则 vi 将告知用户这是未命名的文件,并进入一个空白的界面。

启动 vi 后默认处于命令模式。

常用的启动参数(更多参数参考 vi --help): -b 以二进制模式显示。 -d 打开多个文件,并显示文件之间的不同之处。 -m 被修改后的文件不允许被写入硬盘。 -M 禁止对文件进行修改。 -R 以只读方式打开文件 -e 以 ex(一种 UNIX系统中常见的文本编辑器)的操作

方式运行 vi。vi –R /etc/passwd 以只读方式打开文件 passwd

在 linux 下后缀名没有什么强制要求。对可执行文件,系统一般从文件的属性来区分。对源代码文件,一般要给出合适的后缀, gcc 通过后缀来区别输入文件的类别。

Page 10: VI 编辑器的使用

10

【保存退出】(命令行模式下): :q 在文件未作修改的情况下退出。 :q! 强制退出,不保存对文件所做的修改。 :wq 保存文件修改并退出。或“: x” 也可。 :w 保存文件。 :w file 将正文内容保存到 file 中。 :nw file 保存第 n 行到 file 中。 :m,nw file 保存第 m 行至第 n 行到 file 中。 :r file 读取 file 的内容输出到正文光标所在位置。 :recover 恢复文件。

命令模式下也可退出: ZZ或 ZQ(保存或不保存退出)

Page 11: VI 编辑器的使用

11

3. 文本编辑

【显示行号 ——】 底行命令模式下输入 set nu 可设置 vi 显示行号。命令模式转编辑模式的命令有:i 切换到插入模式,在光标左侧输入正文。a 切换到插入模式,在光标右侧输入正文。o 切换到插入模式,在光标所在行的下一行

增添新行。O 切换到插入模式,在光标所在行的上一行

增添新行。I 切换到插入模式,在光标所在行的开头输

入正文。A 切换到插入模式,在光标所在行的末尾输

入正文。s 切换到改写模式,用输入的正文替换光标

指向的字符。

Page 12: VI 编辑器的使用

12

4 、其他模式下的命令操作

命令的相关符号说明:若无特殊说明, n 或 m 表示数字; c 表示一个字

符; str 表示一个字符串; file 表示文件名。如: nd 表示删除 n 行。

vi 中存在一些特殊字符表示行号,“ .” 表示当前光标所在行, $ 表示末尾行。

准备练习文件:cat –n /etc/passwd >vitest利用重定向,新建一个有行号信息的文本内容的文件。

Page 13: VI 编辑器的使用

13

【光标移动 ——】 命令模式下

k 光标上移一行。 j 光标下移移行。 h 光标左移一个字符。 l 光标右移一个字符。

数字 0/$ 光标移动到行首 / 尾。 w/b 行内移动到下 / 前一个词的开头。 e 行内移动到单词的结尾。 ^ 移动到所在行的一个非空字符。

H 光标移到屏幕顶行。 M 光标移到屏幕中间。 L 光标移到屏幕底行。 nG :移动到第 n 行行首。(或用 :n ) ……

kh l j

Page 14: VI 编辑器的使用

14

【删除 ——】 命令模式下

x 删除光标所在字符 dw/db 删除光标后 / 前一单

词 dd 删除光标所在的行 s 删除光标所在字节,

并进入输入模式

# 表示数字 #x 删除几个字符,如 3x #dw 删除几个单词,如

3dw 表示删除三个单词 #dd 删除多个行,如 3dd

表示删除光标行及光标的下两行

d$ 删除光标到行尾的内容d 光标键:左:删除光标前面的字符;右:删除光标所在的字符;上:将当前行与上一行删除;下:当前行与下一行删除

nd上下光标键 :删除当前行之上、下的几行文本(包括当前行)

Page 15: VI 编辑器的使用

15

【撤销与重做 ——】 命令模式下 u 撤销前一跳命令产生的结果。 . 重做最后一条命令的操作。

Page 16: VI 编辑器的使用

16

【文本复制、粘贴 ——】 命令模式下 复制命令: y

yy 复制整行yw 复制光标所在的单词nyw 复制包括光标所在的 n 个单词nyy 复制包括当前行在内的 n 行

粘贴命令p 当前光标后 / 行下粘贴。

Page 17: VI 编辑器的使用

17

【多个文件间操作 ——】 底行模式1 )多文件间复制

① vi file1 file2 同时打开两个文件。② 默认在第一个文件 file1 的界面下。 5yy ,复制

从当前光标行开始向下五行。③ : next 切换到下一个打开文件 file2 (也

可用: n 切换)。移动光标到合适位置, p ,复制。

④ : prev 切换到上一个打开文件 file1 。

Page 18: VI 编辑器的使用

18

关于复制使用的缓冲区 通用缓冲区

一般情况下,最近一次的抽取、删除、插入和修改的内容都将存放在通用缓冲区中。利用这些缓冲区可以非常方便地实现文本内容的剪切和粘贴。

专用缓冲区名字采用双引号加单个字母表示 ,

如” a ,” b 等等命令模式下输入” ayy,可将当前行的内容复制到专用缓冲区 a 中。输入” ap,则将专用缓冲区中的内容粘贴到光标位置之后。

有些发行版从当前文件切换到下一个文件时通用缓冲区的内容会丢失,而使用专用缓冲区则复制的内容能保留。

Page 19: VI 编辑器的使用

19

删除使用通用缓冲区 例:将当前行开始的 4 行内容向后移动 8 行。

4dd是删除 4 行;8j表示将光标向后移动 8 行;p 会将删除的内容粘贴在光标后。可见 vi自动将删除的 4 行内容保存在通用缓冲区中了。

Page 20: VI 编辑器的使用

20

2 )文件间读写 : r file_name

可导入文件内容添加到当前文件的光标所在行后 : 1,5 w >>file_name

将当前文件第 1 行到 5 行的内容保存到文件file_name 中。

: .,$-2 w >>file_name当前行到倒数第三行的内容写入 file_name 文件中。使用 > 或 >> 重定向符号,以免指定文件存在时 vi 的

“ File exists” 的报错。

Page 21: VI 编辑器的使用

21

【查找替换字符串 ——】 底行模式 :/string 向后搜索指定的字符串,按 n 键继续找下一个。 :?string 向前搜索指定的字符串,按 n 键继续找下一个。 :s/str1/str2/

用字符串 str2 替换当前行中首次出现的字符串 str1 。 :s/str1/str2/gc

用字符串 str2 替换当前行中所有出现的字符串 str1 ,并依次提示是否替换。

:%s/str1/str2/g把文档中所有 str1 替换成 str2 ;

:m,n s/str1/str2/g用 str2 替换第 m 行到第 n 行所有出现的字符串 str1 。

:.,$-2 s/str1/str2/g用 str2 替换当前行到倒数第 3 行所有出现的字符串 str1 。

:s#str1/#str2/#替换当前行第一个 str1/ 为 str2/

Page 22: VI 编辑器的使用

22

【执行其他 shell 命令 ——】 底行模式

用户在编辑文本文件过程中,可以在不退出 vi 的情况下执行 shell 命令,如:

:! ls –l: !mount /dev/sda1 /mnt

Page 23: VI 编辑器的使用

1. 复制 passwd 文件,对该文件做下页要求的练习。

2.用 vi建立一个文件,输入一篇英文自我介绍,命名为 myinfo.eng 保存到用户主目录下。

3.用 vi 新建一个文件,录入你简要的个人信息,包括姓名、 Email 、座右铭等信息,保存成“ ~/myinfo.txt” ,并将 myinfo.eng 的内容添加到myinfo.txt 文件的尾部。

练 习

Page 24: VI 编辑器的使用

24

1. 复制 passwd 文件做练习文件。2. 在 vi 中设定一下行号;3. 利用字符串搜索查找 user 用户信息所在的行

。将该行复制后粘贴到文件第 1 行。并将该行第 3 个单词后的字符都删除。

4. 将 10 到 20 行之间的 bin 改为 BIN ,并且由用户一个个确认是否需要修改。

5. 删除第 10 行以后的内容。复制前 5 行粘贴到文件最后。

6. 将这个文件另存成一个 mypasswd 文件;7. 储存当前文件离开。