1、总结vim命令行模式常见快捷方式,以及vim查找,替换的方法
vi:Visual Interface 文本编辑器
vim:Vi Improved 增强版文本编辑器
模式 | 进入说明 | |
---|---|---|
命令模式 | 打开文件的第一个模式,按esc可从其他模式返回命令模式 | |
插入模式 | 在命令模式下按i,I,a,A,o,O键都可以进入插入模式,esc返回命令 | |
扩展命令模式 | 在命令模式下按":"即可打开扩展命令模式 | |
可视化模式 | 命令模式下,按v进入字符模式,V进入行模式,ctrl+v进入块模式 | |
多文件模式 | 通过vim file1 file2 file3 ...可进入多个文件模式 |
命令模式常用快捷键
字符间跳转:
上下左右方向键:上下左右移
按h:光标左移
按l:光标右移
按j:光标下移
按k:光标上移
先按数再按[hljk]:向指定的方向跳转指定数个
单词间跳转:
w:下个单词的词首
e:当前或下个单词的词尾
b:当前或前一个单词的词首
先按数在按[web]:向指定的方向跳转指定数个单词
当前页跳转:
H:页首 M:页中间行 L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端
行首行尾跳转:
0:跳转到行首
^:跳转到行首的第一个非空白字符
$:跳转到行尾
行间移动:
1G,gg:跳转到第一行
先按数再按G:跳转到指定数行
G:跳转到最后一行
句间移动:
(:上一句
):下一句
段落间移动:
{:上一段
}:下一段
翻屏操作
Ctrl+u:向文件首部翻半屏
Ctrl+d:向文件尾部翻半屏
Ctrl+b:向文件首部翻一屏
Ctrl+f:向文件尾部翻一屏
字符编辑:
x: 删除光标处的字符
nx: 删除光标处起始的n个字符,n为数
xp: 交换光标所在处的字符及其后面字符的位置,p粘贴
~:转换大小写
J:删除当前行后的换行符
替换
r: 替换光标所在处的字符
R:切换成REPLACE模式
删除命令:
d: 删除命令,可结合光标跳转字符,实现范围删除
d$: 删除到行尾
d^:删除到非空行首
d0:删除到行首
dw:删除到下个单词词首
de:删除到这个单词词尾或下个单词词尾
db:删除到这个单词词首或上个单词词首
dd: 删除光标所在的行
dd:删除#行
复制命令:
y: 复制,行为相似于d命令
y$:复制到行尾
y0:复制到行首
y^:复制到非空行首
ye:复制到这个单词或下个单词词尾
yw:复制到下个单词词首
yb:复制到这单词或上个单词词首
粘贴命令:
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴
至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴
至当前光标所在处的前面
查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
撤销更改
u撤销最近的更改
nu撤销之前n次更改
U 撤消光标落在这行后所有此行的更改
按Ctrl - r重做最后的“撤消”更改
. 重复前一个操作
n.重复前一个操作n次
插入模式:可正常编辑
扩展命令模式
地址定界
:n,m 申明范围,从n行开始到m行的范围内
$ 最后一行 ,$-1 倒数第二行
% 全文,等价于 1,$
:/pat1/,/pat2/ 从第一次被pat1模式匹配到的位置开始,到pat2匹配到的位置结束
后接编辑命令:d(删除),y(复制)
w file:将范围内内容另存至file文件中
r file:在/pat2/后插入指定文件中的所有内容
查找并替换
s: 在扩展模式下完成查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用1, 2, ...等后向引用符号;还可
以使用“&”引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问
查找替换中的分隔符/可替换为其它字符,例如
s@/etc@/var@g
s#/boot#/#i
可视化模式
允许选择的文本块
v 面向字符
V 面向行
ctrl-v 面向块
可视化键可用于与移动键结合使用:
w ) } 箭头等
突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
多文件模式
vim FILE1 FILE2 FILE3 ...
:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 退出所有
:wqall
1)复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions文件中的/etc/sysconfig/init为/var/log
:%s@/etc/s.*fig/init@/var/log@
2)删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号
:%s@^# +.*$@@
2、总结脚本中运算符、逻辑运算以及用法
运算符有:
+:加
-:减
*:乘
/:除
%:取余
逻辑运算有:
&:与-两边为真,结果为真,有假为假
|:或-有真为真,两边为假,结果为假
!:非-取反
短路运算
短路与:&&
第一个为0,结果必定为0
第一个为1,第二个必须要参与运算
短路或:||
第一个为1,结果必定为1
第一个为0,第二个必须要参与运算
异或
^:异或的两个值,相同为假,不同为真
1)编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和
2)编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和