linux 操作系统 文件编辑器 vi

Post on 27-Jan-2016

104 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

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

Acegene IT Co. Ltd. 1

Linux 操作系统文件编辑器 vi

周炯周炯上海艾基信息技术有限公司上海艾基信息技术有限公司

Acegene IT Co. Ltd. 2

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

Acegene IT Co. Ltd. 3

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

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

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

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

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

Acegene IT Co. Ltd. 4

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

方式和行方式:

命令方式

插入方式 行方式

插入命令Esc

Esc

命令执行完:

Acegene IT Co. Ltd. 5

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

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

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

Acegene IT Co. Ltd. 6

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

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

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

Acegene IT Co. Ltd. 7

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

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

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

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

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

Acegene IT Co. Ltd. 8

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

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

Acegene IT Co. Ltd. 9

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

Acegene IT Co. Ltd. 10

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

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

Acegene IT Co. Ltd. 11

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

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

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

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

Acegene IT Co. Ltd. 12

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

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

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

Acegene IT Co. Ltd. 13

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

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

Acegene IT Co. Ltd. 14

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

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

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

参数指定的位置

Acegene IT Co. Ltd. 15

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

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

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

Acegene IT Co. Ltd. 16

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

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

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

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

Acegene IT Co. Ltd. 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 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

Acegene IT Co. Ltd. 18

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

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

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

Acegene IT Co. Ltd. 19

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

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

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

Acegene IT Co. Ltd. 20

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

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

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

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

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

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

– 上述命令属于行方式

Acegene IT Co. Ltd. 21

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

– [addr1,addr2]m[addr3]– [addr1,addr2]t[addr3]

–上述行方式下的命令分别表示将第 addr1 行至第 addr2 行之间的内容移动 /拷贝到第 addr3 行的后面

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

到当前行的末尾

Acegene IT Co. Ltd. 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 表示放在当前位置之后

Acegene IT Co. Ltd. 23

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

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

Acegene IT Co. Ltd. 24

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

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

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

Acegene IT Co. Ltd. 25

§3.4 高级命令•宏

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

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

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

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

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

Acegene IT Co. Ltd. 26

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

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

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

Acegene IT Co. Ltd. 27

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

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

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

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

Acegene IT Co. Ltd. 28

一、行方式下的设置

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

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

Acegene IT Co. Ltd. 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

Acegene IT Co. Ltd. 30

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

下次进入 vi 还需要重新设置•我们可以将上述 :set命令写在一个名为 ~/.exrc的文件中,这样每次进入 vi就会自动执行。

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

Acegene IT Co. Ltd. 31

§3.6 vim和 gvim的高级特色• vim 代表 Vi IMproved,如同其名称所暗

示的那样, vim 作为标准 UNIX 系统 vi 编辑器的提高版而存在。 vim 除提供和 vi 编辑器一样强大的功能外,还提供有多级恢复、命令行历史以及命令及文件名补全等功能。

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

Acegene IT Co. Ltd. 32

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

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

Acegene IT Co. Ltd.

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

Acegene IT Co. Ltd. 34

练习• 编辑一个文件

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

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

top related