linux 操作系统 文件编辑器 vi

34
1 Linux 操操操操操操操操 vi

Upload: tamber

Post on 26-Jan-2016

169 views

Category:

Documents


13 download

DESCRIPTION

Linux 操作系统 文件编辑器 vi. Linux —— 文本编辑器 vi. vi 的基本操作 vi 高级编辑命令 vi 的设置. §3 .1 进入 vi. vi 是一个较大的 UNIX 命令,在启动的时候也有它自己的选项和参数 基本语法: vi [-options] [+[n]] [file] 常用选项有: -r, -R -r 用于恢复系统突然崩溃时正在编辑的文件 -R 用于以只读方式打开文件 +n 用来指明进入 vi 后直接位于文件的第 n 行,如果不指定 n ,则位于最后一行. §3 .2 vi 的工作方式. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linux 操作系统 文件编辑器 vi

1

Linux操作系统文件编辑器 vi

Page 2: Linux 操作系统 文件编辑器 vi

2

Linux——文本编辑器 vi • vi 的基本操作• vi 高级编辑命令• vi 的设置

Page 3: Linux 操作系统 文件编辑器 vi

3

§3.1 进入 vi• vi 是一个较大的 UNIX 命令,在启动的时

候也有它自己的选项和参数• 基本语法:

vi [-options] [+[n]] [file]

• 常用选项有: -r, -R– -r 用于恢复系统突然崩溃时正在编辑的文件– -R 用于以只读方式打开文件– +n 用来指明进入 vi 后直接位于文件的第 n 行,

如果不指定 n ,则位于最后一行

Page 4: Linux 操作系统 文件编辑器 vi

4

§3.2 vi的工作方式• vi 一共有三种工作方式:命令方式、插入

方式和行方式:

命令方式

插入方式 行方式

插入命令Esc

Esc

命令执行完:

Page 5: Linux 操作系统 文件编辑器 vi

5

一、命令方式• 无论用户处于什么状态,按 Esc 键或组合

键 Ctrl+[ 就可以进入命令方式。当用户初始进入 vi 时,也处于这个状态。

• 用户在命令方式下可以输入各种合法的 vi内部命令,这些命令不会回显不会回显,而且不需不需要回车就会被执行要回车就会被执行

Page 6: Linux 操作系统 文件编辑器 vi

6

二、文本插入方式• 在命令方式下使用某些命令会导致 vi 马上

进入文本插入方式,这些命令包括:i,I,a,A,o,O 等

• 在这种方式下用户的任何输入都被当作是文件的内容看待,并将其显示在屏幕上。

Page 7: Linux 操作系统 文件编辑器 vi

7

三、最后行方式• 行方式又称为最后行方式,通过在命令方式下键

入冒号 : 可进入这个方式,在这种方式下 vi 会在屏幕的最后一行显示一个冒号并等待用户输入命令

• 行方式下用户输入的命令将回显在最后一行上,并且直到用户输入回车 vi 才会去执行它

• 命令执行完毕后, vi 自动进入命令状态• 或者在输入命令时敲 Esc 键或组合键 Ctrl+[ 、

或用退格键删除所有的输入之后再按一下退格键回到命令方式

Page 8: Linux 操作系统 文件编辑器 vi

8

§3.3 基本编辑命令• 移动光标 (cursor movement)

– Bksp 左移一个字符– Space 右移一个字符– Enter,+ 下移一行– h 左移一个字符– l 右移一个字符– j 下移一行– k 上移一行

Page 9: Linux 操作系统 文件编辑器 vi

9

§3.3 基本编辑命令– [n]G跳到第 n 行– w,W 跳到下一个词的词头– b,B 跳到上一个词的词头– e,E 跳到下一个词的词尾– ^ 跳到行首(第一个非空字符)– [0] 跳到行首– $ 跳到行尾

Page 10: Linux 操作系统 文件编辑器 vi

10

§3.3 基本编辑命令– Ctrl-u 向下翻滚 1/2 屏– Ctrl-d 向上翻滚 1/2 屏– Ctrl-f 向下翻滚 1 屏– Ctrl-b 向上翻滚 1 屏– Ctrl-n 向下移动一行– Ctrl-p 向上移动一行

• 上述命令 (除 [n]G外 ) 的前面均可增加一个数字来控制移动的次数

Page 11: Linux 操作系统 文件编辑器 vi

11

§3.3 基本编辑命令• 修改文本命令 (modification)

– [n]r<char> 用字符 char 代替光标处的字符, n 指定字符 char 出现的次数。 n 缺省为 1 。

– [n]R<text> 用 text 的内容替换当前行 n次。 n 缺省为 1 。命令执行完后处于插入方式,必须按 Esc 键或组合键 Ctrl+[ 回到命令方式。

– Cw,cw,cc 替换一个词或替换到行尾

Page 12: Linux 操作系统 文件编辑器 vi

12

§3.3 基本编辑命令• 编辑中的每一行正文都有自己的行号,用

下列命令可以移动光标到指定行: :[n] 将光标移到第 n 行• 命令模式下,可以规定命令操作的行号范

围。数值用来指定绝对行号;字符“ .” 表示光标所在行的行号;字符 符“ $” 表示正文最后一行的行号;简单的表达式,例如“ .+5” 表示当前行往下的第 5 行。例如: :345 将光标移到第 345 行

Page 13: Linux 操作系统 文件编辑器 vi

13

§3.3 基本编辑命令• 在编辑模式下正确定位光标之后,可用以

下命令切换到插入模式 (Insert) : – i 在光标左侧输入正文 – I 在光标所在行的开头输入正文 – a 在光标右侧输入正文 – A 在光标所在行的末尾输入正文 – o 在光标所在行的下一行增添新行 – O 在光标所在行的上一行增添新行

Page 14: Linux 操作系统 文件编辑器 vi

14

§3.3 基本编辑命令• 删除文本命令 (delete)

– x 删除当前光标所在位置的字符– X 删除光标前的字符– dd 删除当前行– D 删除从当前光标位置直到行尾的所有字

符– d<cursor_movement>

删除从当前光标位置直到<cursor_movement>

参数指定的位置

Page 15: Linux 操作系统 文件编辑器 vi

15

§3.3 基本编辑命令• 字符串搜索 (search)

– /[pattern]/[offset]<CR>– /[pattern]<CR>– ?[pattern]?[offset]<CR>– ?[pattern]<CR>–上述四个命令分别表示向下 / 向上搜索指定的

正则表达式 [pattern] ,并将光标停留在相对搜索结果距离为 [offset] 行处

Page 16: Linux 操作系统 文件编辑器 vi

16

§3.3 基本编辑命令– n 重复命令 , 搜索得到使用结果后,可以重复

命令 n或 N 沿着相同或相反的方向重复上一次的搜索

– f<char> 命令在当前行搜索指定的字符并将光标停在匹配字符上

– t<char> 命令在当前行搜索指定的字符并将光标停在匹配字符的左边

Page 17: Linux 操作系统 文件编辑器 vi

17

§3.3 基本编辑命令• 字符串替换 (Substitute)

– 此命令要求先进入行方式– 命令的语法为:[addr1,addr2|g]s/find_exp/repl_exp/[g|n][c]

– 上述命令表示在第 addr1 行到 addr2 行的范围内将字符串 find_exp用 repl_exp 代替。

– n 表示替换每行的第 n 个匹配, c 表示需要用户确认– g 放在命令末尾,表示行全程,不加 g ,表示只对搜索

字符串的首次出现进行替换; g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

Page 18: Linux 操作系统 文件编辑器 vi

18

§3.3 基本编辑命令• 重复前一命令: .• 取消上一命令: u• 重画屏幕: Ctrl-l• Ctrl_G 命令显示当前编辑文本的状态,包

括文本共有多少行、文件名以及目前光标停在多少行。

• 文件的保存:行方式下使用 w 命令

Page 19: Linux 操作系统 文件编辑器 vi

19

§3.3 基本编辑命令• 退出 vi :行方式下使用 q 命令将退出 vi ,

如果文件作过改动但还没有保存,系统将作出提示并取消此次退出动作。行命令 x相当于 :wq 命令。在命令方式下使用命令ZZ 等效于 :x 命令。

• 如果由于读写权限或是更新方面的问题,导致 vi拒绝执行保存文件或退出 vi 的命令,那么可以在命令后加一个 ! 号表示强制执行。

Page 20: Linux 操作系统 文件编辑器 vi

20

§3.4 高级命令• 文件操作命令

– [addr1,addr2]w[!] [filename] :将编辑缓冲区的 addr1 行到 addr2 行之间的内容写回到存储介质上的名为 filename 的文件中去, w 后的 ! 表示强制写入。

– r filename : 将文件 filename 读入编辑缓冲区

– e filename : 编辑已存在于缓冲区中的、名为 filename 的文件

– f filename : 将当前文件重命名为 filename

– f : 打印当前文件名称和状态,如文件的行数、光标所在的行号等

– 上述命令属于行方式

Page 21: Linux 操作系统 文件编辑器 vi

21

§3.4 高级命令• 文本的移动和复制

– [addr1,addr2]m[addr3]– [addr1,addr2]t[addr3]–上述行方式下的命令分别表示将第 addr1 行至

第 addr2 行之间的内容移动 /拷贝到第addr3 行的后面

• 行的合并–命令方式下的命令 J 将当前行的下面一行合并

到当前行的末尾

Page 22: Linux 操作系统 文件编辑器 vi

22

§3.4 高级命令• 缓冲区操作

– vi提供 36 个编辑缓冲区,它们分别为 a-z共 26 个命名缓冲区 ,1-9共 9 个删除缓冲区,另外还有一个未命名的缓冲区,一般称之为 buffer 0 。

– 将文本内容送入缓冲区的命令为:[“char][n]y[<cursor movement>|y|w|l]• Char 表示缓冲区的名字,小写表示覆盖写入,大写表示追加写入• n 表示重复次数• <cursor movement> 表示想要写入缓冲区的文本的范围,从光标

的当前位置算起。• y 表示以行为单位• w 表示以词为单位• l 表示以字符为单位

– 从缓冲区中提取其内容并将其插入在当前文本的命令为:[“char]p|P• P 表示放在当前位置之前, p 表示放在当前位置之后

Page 23: Linux 操作系统 文件编辑器 vi

23

§3.4 高级命令• 在 vi 内使用 shell

– 用户在运行 vi 的过程中不用推出 vi 就可以运行任何 UNIX 命令::!<unix_cmds><CR>• 在 unix_cmds 参数中,可以使用%作为当前文

件名的缩写,用 # 作为上次编辑文件的缩写,用 !作为上次命令的缩写

Page 24: Linux 操作系统 文件编辑器 vi

24

§3.4 高级命令• 使用自定义的缩写

– :abbr|ab str1 str2 命令用用户自定义的字符串 str1 来代替字符串 str2

– :unab|una str1 取消缩写 str1– 上述四个命令都是行方式下的命令

Page 25: Linux 操作系统 文件编辑器 vi

25

§3.4 高级命令•宏

– :map key cmds_list• 此时 key 必须是一个单独的字母。或是一个 Ctrl 加

上一个字母• 此时定义的是宏命令

– :map! key string• 此时 key 必须是一个单独的字母。或是一个 Ctrl 加

上一个字母• 此时定义的是宏字符串,用于文本输入方式

– :unmap key 将取消 key 的宏定义

Page 26: Linux 操作系统 文件编辑器 vi

26

§3.4 高级命令– 要注意的是在输入 Ctrl+key 的转义序列时必

须先按下下列组合键: Ctrl-v 。– 如果 cmds_list 是行方式下的命令,那么在其

末尾必须加上一个回车,输入方法为先输入Ctrl-v ,然后输入 Ctrl-m 。 Ctrl-m 代表回车。

Page 27: Linux 操作系统 文件编辑器 vi

27

§3.5 vi的配置• vi 的配置共有三种方法,

– 一种是在运行 vi 时使用行命令 set 来设置;– 一种是使用 EXINIT环境变量;– 最后一种是使用用户主目录下的 .exrc 文件。

• vi 的显示是输出到终端上的,所以终端的类型会对 vi 的显示造成影响。– 终端类型设置是使用 TERM环境变量

• (ansi, vt100) :$TERM=ansi;export $TERM

Page 28: Linux 操作系统 文件编辑器 vi

28

一、行方式下的设置

• 为控制不同的编辑功能, vi 提供了很多内部选项。在行方式下使用命令 set 可以显示和修改 vi 的各种内部环境变量。

• 基本语法::set argument[=value]

Page 29: Linux 操作系统 文件编辑器 vi

29

一、行方式下的设置• 命令 set 的参数及其功能如下:

– all 列出所有选项设置的情况– term 设置终端类型– ignorecase 在搜索中忽略大小写– list 显示制表符 (^I) 和行尾标志 (^M)– number 显示行号– report 显示由面向行的命令修改过的行数– ruler 在屏幕底部显示光标所在行、列的位置– terse 显示简短的告警信息– warn 显示简短的未保存告警– nomagic 取消元字符在搜索字符串中的特殊性– nowrapscan 搜索时不回绕– mesg 允许 vi 显示其他用户用 write写到自己终 端上的信息

– shiftwidth 指定自动缩进的制表位– autoindent 自动缩进– directory 指定编辑缓冲区的路径– showmode 显示文本插入方式– window 设置显示的文本行数– mk 将选项保存在当前目录的 .exrc 文件中 – tabstop 设置按 Tab 键跳过的空格数。例如 :set tabstop=n , n 默认值为 8

Page 30: Linux 操作系统 文件编辑器 vi

30

二、永久设置方式• 上面所说的 :set 命令在退出 vi 后就失效了,

下次进入 vi还需要重新设置•我们可以将上述 :set 命令写在一个名为

~/.exrc 的文件中,这样每次进入 vi 就会自动执行。

• 或者将需要用到的 :set 命令保存在 EXINIT环境变量中。

Page 31: Linux 操作系统 文件编辑器 vi

31

§3.6  vim 和 gvim 的高级特色• vim 代表 Vi IMproved ,如同其名称所暗示的那样, vim 作为标准 UNIX 系统 vi 编辑器的提高版而存在。 vim 除提供和 vi 编辑器一样强大的功能外,还提供有多级恢复、命令行历史以及命令及文件名补全等功能。

• gvim 是 vi 的 X Window 版本,该版本支持鼠标选中,一些高级光标移动功能,并且带有菜单和工具按钮。

Page 32: Linux 操作系统 文件编辑器 vi

32

§3.6 小结• vi 必须经常使用才能够掌握•另外还有一些高级的操作方法,有兴趣的

同学可以参考 vi 的联机手册

Page 33: Linux 操作系统 文件编辑器 vi

AQ&Q U E S T I O N SQ U E S T I O N S

A N S W E R SA N S W E R S

Page 34: Linux 操作系统 文件编辑器 vi

Acegene IT Co. Ltd. 34

练习• 编辑一个文件

– 光标移动– 插入、修改、删除– 保存,推出

• 编辑文件 /etc/bashrc– [\u@\h \W] 替换成 [\u@\h:\w]– 保存