利用vi编辑器创建和编辑正文文件(二)
末行模式下的命令
1、 w:写文件,将编辑的内容保存到文件系统。
2、 w!:如果只读文件,强制写入系统。
3、 q!:退出vi,但文件内容修改的话,系统要提示是否保存。
4、 wq!:保存内容,并退出。
5、 /:查找匹配的字符串,在编辑时,要查找包含某个字符串,可使用/字符串“”,自动查找,系统会突然显示所找到的字符串,并转到第一个字符串。
6、 n:表示加载新文件,若加载目录下的文件hello.c,可使用“n hello.c”。
7、 e:表示创建新文件。
编辑多个文件
1、 vi编辑器允许用户一次调入多个文件进行编辑,但是每次只能对单个文件进行修改,要同时调入多个文件,依次进行编辑,使用的命令格式:
vi [文件1] [文件2 [文件3]…….[文件3]。其中文件1 文件2 文件3表示要使用vi查看文件的名称。当用户完成第一个文件编辑并且存盘后,在末行模式下输入 n (next)就能进入第二个文件;输入rew能回到首文件,输入args就会在最后一行显示当前缓冲区的文件名称。
分割多个窗口
1、在末行模式下输入split,即实现窗口分割功能。在命令行模式下输入ctrl+w,将光标移动到下一个窗口。关闭窗口:q! ,wq!,或者close,quit。垂直分割vsplit。
2、数据恢复:在vi编辑器下可以使用 –r命令恢复。例如:vi -r name.txt。
3、定义新命令:进行程序或者文本编辑时,对于常用的字符或者短语,vi提供使用定义快捷输入的方式。Vi中经常使用新定义的方法:第一种使用ab命令,另一种在末行命令模式下使用imap或者map命令。 ab命令方式:ab字符1 字符串1.在该模式下使用字符1代替字符串1.。 imap命令方法:imap 快捷键 需要替换的字符串。
4、文本整体移动:文本左右移动>> <<。上下移动m:n m k,其中n表示源目的行,m表示移动的操作,k表示将移动的行移动到第k行下方。
vi的高级使用
vi编辑器中用户可以根据自己的需要灵活的制定工作环境,这些命令一旦设置就会立即生效。
1、ai:autoindent选项把每一行缩排为与其上一行首对其,它的默认值是autoindent.off.
2、ap:autoprint选项在当前行改变时将它打印到屏幕上,他的默认值是autoprint.on.
3、sm:showmatch选项在输入右圆括号时显示匹配的左圆括号,这个选项对于编写代码的程序而言非常有用,默认值是showmatch off
4、Wm=n:warpmargin选项定义一个右边距。在本命令语法中,n是一个整数。如果n大于0,那么本命令强迫回车,以便留出右边距。例如 wm=5告诉vi当字符出现在行内的最后5个字符中时换行。默认wm=0.
5、report:report选项设置编辑操作改变的次数,这个次数能导致一个信息出现在状态行上。例如report=3,将在你删除3行后触发信息,当你删除少于3行时不显示信息,他的默认值为5、
6、smd:showmode选项在给出相关命令时,在状态行下面显示插入,它的默认值 showmode off。
7、ws:word search:选项在查找期间遇到文件结束符时,从结束符处绕文件到文件开始字符,继续查找。默认值为on。
8、eb:errorbells:选项在出现命令错误时使计算机报警。它的默认值为 errorbells off。
9、redaw:redraw选项发生变化时使屏幕刷新,默认值为redraw on。
10、warn:当已修改了缓冲区内容,但没有将缓冲区存在磁盘中却试图突出vi时,warn选项将显示一个警告信息。默认值为on。
11、fl:通常情况下在vi编辑器汇总输入无效的命令或者按下ESC时,都会发出滴答的声音,设置为flash表示不再发出声音,再设置为onflash表示发出声音。
12、list:设置list,会使vi中的Tab符号用^1表示,用$表示每行的结束,设置nolist表示用空白符号显示Tab,不显示行的结束符。
13、ic:ignorecase通常情况下在vi中区分大小写的搜索,即区分大写字母和小写字母,当设置为ignorecase将不再区分大小写,而设置noignorecase将恢复大小写搜索。
14、wrap:erap用于控制不能在屏幕一行显示的较长行,设置为true表示自动换行,设置为nowrap表示不自动换行,默认自动换行。
15、如果用户要修改环境的配置,只需在末行模式下输入set加相关的参数即可。
16、变量设置方法:尽管上述方法可以对vi进行设置,但这些设置仅可以在末行模式下使用,有些用户可能想在加载文件时,就让他们自动设置,而不需要内粗编辑文件时都手工进行。鉴于此,vi使用EXINIT变量自动设置选项,通过set命令设置想要的选项。任何时候进入vi编辑器,存储在EXINIT中的set命令都会自动执行。
$EXINIT=’set numbert’ :在任何时候让vi的行前都带行号。