7 vim编辑及文件查找
vim编辑器 文本:纯文本,ASCII text;Unlcode(编码机制) 文本编辑种类: 行编辑器:sed 全屏编辑器:nano,vi vi:VIsual Interface vim:vi IMproved (vi的增强版) vim:模式化的编辑器 基本模式: 编辑模式,命令模式 输入模式(插入模式) 末行模式: 内置的命令行接口 打开文件: vim [options] [file ..] +#:打开文件后,直接让光标处于第#行的行首 +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首 +:表示文件末端 模式转换: 编辑模式:默认模式 编辑模式 --> 输入模式 i:install,在光标所在处输入 a:append,在光标所在处后方输入 o:在光标所在处下方打开一个新行; I:在光标所在行的行首输入 A:在光标所在行的行尾输入 O:在光标所在处的上方打开一个新行 从输入模式 --> 编辑模式 Esc 编辑模式 --> 末行模式 : 末行模式 --> 编辑模式 Esc 关闭文件: ZZ:在编辑模式下,保存并退出 末行模式下: :q 退出 :q!:强制退出,不保存此前的编辑 :wq? 保存并退出 :x? 保存并退出 :w /PATH/TO/SOMEFILE 光标跳转: 字符间跳转 h:向左 j:向下 k:向上 l:向右 #command:跳转由#指定的个数字符 单词间跳转 w:下一个单词的词首 e:当前或后一个单词的词尾 b:当前或前一个单词的词首 #command:跳转由#指定的个数的单词 行首行尾跳转 ^:跳转至行首的第一个非空白字符 0:跳转至行首(空白字符可以,但是tab键的空白不可以) $:跳转至行尾 行间跳转 #G:跳转至由#指定的行 G:跳转至最后一行 句间跳转 ) ( 段间跳转 } { 翻屏操作: Ctrl+f:向文件尾部翻一屏 Ctrl+b:向文件首部翻一屏 Ctrl+d:向文件尾部翻半屏 Ctrl+u:向文件首部翻半屏 Enter:按行向后翻
vim的编辑命令: 字符编辑 x:删除光标所在处的字符 #x:删除光标所在处起始的#个字符 xp:交换光标所在处字符与其后面的字符的位置 替换命令:(replace) r :替换光标所在处的字符,按r后,需要后面要跟一个要替换成的字符 删除命令 d:删除命令,可结合光标跳转字符,实现范围删除 d$ d^ dw de db #d command dd:删除光标所在的一整行 #dd:删除光标所在处的行起始的共#行 粘贴命令(p,put,paste) P:大写P,缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方,否则,则粘贴至当前光标所在处的前方 p:小写p,缓冲区的内容如果为整行,则粘贴在当前光标所在行的下方,否则,则粘贴至当前光标所在处的后方 复制命令(yank,y): y:表示复制,工作行为相似于d命令 y$ y^ y0 ye yw yb #command yy:复制一整行 #yy:表示复制#行
改变命令(change,c): 编辑模式 --> 输入模式,实现删除操作: c$ c^ c0 cb ce cw #command cc:删除光标所在的行,并转换为输入模式 #cc: 其他编辑操作: 可视化模式: v:按字符选定 V:按行选定 结合编辑命令:d,c,y,p 撤销操作(undo): u:撤销此前的操作 #u:撤销此前的#个操作 撤销此前的撤销: Ctrl+r 重复执行前一个编辑操作 . vim自带的练习教程:vimtutor ? vim末行模式: 内建的命令行接口 (1)地址定界 :start_pos[,end_pos] #:特定的第#行,例如5即第5行 .:当前行 $:最后一行 #,#:指定行范围,左侧为起始行,右侧为结束行 #,+#:指定:行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;例如3,+7 %:全文 /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行 /first/,$ /pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行 可同编辑命令一同使用,实现编辑操作: d y c w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中 r /PATH/FORM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置 (2)查找 /PATTERN:从当前光标所在处向文件尾部能够被当前模式匹配到的所有字符串 ?PATTERN:从当前光标所在处向文件首部能够被当前模式匹配到的所有字符串 n:下一个,与命令方向相同 N:上一个,与命令方向相反 (3)查找并替换 s:末行模式的命令;使用格式: s/要查找的内容/替换为的内容/修饰符 要查找的内容:可使用正则表达式 替换为的内容:不能使用正则表达式,但可以引用 如果“要查找的内容“部分在模式中使用分组符号:在"替换为的内容"中使用后向引用 直接引用查找模式匹配到的全部文本,要使用&符号 修饰符: i:忽略大小写 g:全局替换,意味着一行中如果匹配到多次,则均替换 可把分隔符替换为其它非常用字符 [email?protected]@@ s### 示例: %[email?protected]&;t([[:alpha:]]+)&;@T[email?protected] %[email?protected]&;r[[:alpha:]]+&;@&[email?protected] 练习: 1.复制/etc/grub2.cfg文件至/tmp/目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符 :%[email?protected]^[[:space:]][email?protected]@?? 2.复制/etc/rc.d/init.d/functions文件至//tmp目录中,用查找替换命令为/tmp/functions文件中的每个以空白字符开头的行的行首加上# :%[email?protected]^[[:space:]][email?protected]#& 3.为/tmp/grub2.cfg文件中的前三行的行首加上#号 :1,[email?protected]^@#& 4.将/etc/yum.repos.d/Centos-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1 :%[email?protected](enabled|gpgcheck)[email?protected][email?protected]?
vim的多文件功能 多文件: vim file1 file2 ...... 大文件间切换 :next 下一个 :prev 上一个 :first 第一个 :last 最后一个 退出所有文件: :wqall 保存所有文件并退出 :wall :qall 多窗口: -o:水平分割窗口 -O:垂直分割窗口 在窗口间切换:Ctrl+w 注意:单个文件也可以分割为多个窗口进行查看 Ctrl+w,s:水平分割窗口? 逗号为松开 Ctrlw,v:垂直分隔窗口 逗号为松开 定制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 nohisearch 5、语法高亮 启用:syntax on 禁用:syntax off 6、忽略字符大小写 启用:set lc 禁用:set nolc 获取帮助: :help :help subject 课外作业:如何设置tab键缩进4个字符 ? bash脚本编程之算数运算 算数运算格式: (1)let? VAR=算数运算表达式 (2)VAR=$[算数运算表达式] (3)VAR=$((算数运算表达式)) (4)VAR=$(expr $ARG1 $OP $ARG2 注意:惩罚符号在有些场景中需要使用转义符 练习:写一个脚本,完成如下功能: 添加三个用户 求此三个用户的uid之和 #!/bin/bash useradd test1 useradd test2 useradd test3 a=`id -u test1` b=`id -u test2` c=`id -u test3` echo $(($a+$b+$c)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |