在上一章当中我们讲述了vim的基本操作,例如我们如何打开文件及关闭文件,以及如何进行编辑等,以及讲到了vim的诸多模式中之间的转换和常用的编辑命令,那么我们接下来介绍vim的末行模式及内建命令行接口的使用。
一、vim末行模式
vim的末行模式使得让vim编辑器的本身功能变得完善,使其编辑器是更加强大的一款工具,其末行模式的命令种类很多,那么在这里介绍其比较常见的用法:
1.1 地址定界
指的是在文本中的那个范围内作出相应的编辑操作,用逗号隔开指明起始位置和结束位置,其命令格式如下::start_pos[,end_pos]
从以上的格式可以看出,后面的结束位置是可以省略的,那么其编辑的方式有以下几种:#:特定的第#行,例如5即第5行;
.:当前行;
$:最后一行;
#,#:指定行范围,左侧为起始行,右侧为结束行
#,+#:指定行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7
.,$-1
1,$:全文;
%:全文;
/PATTERN/:从光标所在处其实向文件尾部第一次被模式匹配到的行;
/first/, $
/pat1/,/pat2/:从光标所在处开始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间所有的行;
那么地址定界和我们此前选定的行范围一样,可以结合编辑命令一起使用,实现编辑操作:例如:
d
y
c
w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;
我们可以指定某个行范围来进行其文件合并,使用r命令,空格跟上某个文件的路径就可以讲该文件内容合并到当前的文件当中。r /PATH/TO/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;
1.2 查找
查找这个功能我们其实并不陌生,在Windows当中打开某个word文档时,想查找某个字段,或者使用某个文本编辑器,使用Ctrl+f快捷键,就会显示出搜索栏用来其进行查找,我们在Linux中使用less命令或man手册也是能查找出某个字段,但在vim中,我们不仅可以用关键字,还可以使用模式来进行查找。/PATTERN:从当前光标所在处向文件尾部查找能够被当前匹配到的所有字符串;
?PATTERN:从当前光标所在处向文件首部查找能够被当前匹配到的所有字符串;
n:下一个,与命令方向相同;
N:上一个,与命令方向相反;
1.3 查找并替换
以上说完了如何进行查找,那么替换也无非就是查找之后做出的一个处理的动作,讲查找到的字符或字段来进行替换你想要的字符串果,使用特殊的命令为s。s:末行模式的命令;使用格式为:
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用正则表达式;
替换为的内容:不能使用正则表达式,但可以引用;
如果"要查找的内容"部分在模式中使用分组符号;在"替换为的内容"中使用后向引用;
直接引用查找模式匹配的全部文本,要使用&符号;
修饰符:
i:忽略大小写;
g:全局替换,意味着一行中如果匹配到多次,则均为替换;
可把分隔符替换为其它非常用的字符:
s@@@
s###
所以替换为的内容不能使用正则表达式元字符,因为它并不是处理查找的内容而去使用的,但可以使用后向引用机制,也可以使用直接引用机制用来匹配全部的内容的。
1.4 vim多文件功能
vim可以一次打开多个文本文件来进行处理,不过由于是全屏编辑器,所以打开文件时只能显示一个,所以要在全屏模式下我们可以进行对文件的操作与转换。其用法为:vim FILE1 FILE2 ...
由于vim是一款全屏编辑器,所以我们可以用以下方式在文件之间进行切换::next 下一个
:prev 上一个
:first 第一个
:last 最后一个
退出所有文件::wqall
:wall
:qall
还有一种是多窗口模式,全屏幕的编辑器由于默认只能显示一种,我们可以通过某些选项来进行多窗口讲多个文件一同显示。-o:水平分割窗口;
-O:垂直分割窗口;
在窗口间切换:Ctrl+w, ARROW
注意:单个文件也可以分割多个窗口进行查看:
Ctrl+w,s:水平分割窗口;
Ctrl+w,v:垂直分割窗口;
1.5定制vim工作特性
所谓的工作特性无非就是讲某个功能显示出来,例如添加行号或者说是自动缩进。那么我们需要注意的是,在末行模式下的设定,仅对当前的vim进程是有效的,要想让它永久生效,需要写入配置文件当中。永久生效:
全局:/etc/vimrc
用户个人:~/.vimrc
注意:该文件会有可能没有,需新建;
定制特性如下:1、行号
显示:set number,简写为set nu
取消显示:set nonumber, set nonu
2、括号匹配高亮
匹配:set showmatch, set sm
取消:set nosm
3、启动缩进
启用:set ai
取消:set noai
4、高亮搜索
启用:set hlsearch
取消:set nohlsearch
5、语法高亮
启用:syntax on
忽略:syntax off
6、忽略字符大小写
启用:set ic
禁用:set noic
7、tab四格
set ts=4
获取帮助:
:help
:help subject
二、bash脚本之算数运算
算数运算对我们来讲并不陌生,在小学或中学当中老师教我们如何使用加减乘除以及次方或者求余数用来计算数学问题得出该题目的正确答案,在编程当中它们也是常见的算数运算符,不过相比书本中稍微有些不同。+, -, *, /, **, %
在bash当中,由于bash是弱类型的语言,默认统统当作字符型,所以如果算数来说,示例如下:# echo "$num1+$num2"
1+2
但如果把变量申明为整型,也会当成结果运算时也会当成字符串,作为变量替换:# declare -i num3=3
# declare -i num4=4
# echo "$num3+$num4"
3+4
对于bash来说,要做算数运算,必须要用特殊算数的运算格式。算数运算格式:
(1) let VAR=算数表达运算式
(2) VAR=$[算数运算表达式]
(3) VAR=$((算数运算表达式))
(4) VAR=$(expr $ARG1 $OP $ARG2)
注意:乘法符号在有些场景中需要使用转义符;