推荐链接:
- Linux【NO.4】:globbing:文件名通配
- Linux【NO.4】:vim文本编辑器入门进阶
- Linux【NO.4】:正则表达式
- Linux【NO.4】:文本处理三剑客之grep
- Linux【NO.4】:文本处理三剑客之sed
- Linux【NO.4】:文本处理三剑客之awk
vim文本编辑器入门进阶
我们为什么要学习vim编辑器?
Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一定要学习vim呢?有以下几个原因:
- (1)所有的Unix like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在。
- (2)很多软件的编辑接口都会主动调用vi。
- (3)vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计。
- (4)程序简单,编辑速度快。
什么是vi:
vi(Visual Interface)是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本模式化的编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。vim提供三种基本模式:编辑模式即命令模式,输入模式,末行模式;我们要熟练掌握模式切换和相关的技能;
文本编辑器种类:
行编辑器:sed
全屏编辑器:nano,vi,vim
话不多说上图先
基础入门:
打开文件: A vim [options] [file ..] 如果文件存在默认打开文件,光标自动处在第一行的行首 +#:打开文件后,直接让光标出于第#行的行首 vim + /etc/init.d/functions 光标自动尾行行首 +/PATTERN:打开文件后,直接让光标出于第一被PATTERN匹配的行的行首 模式转换: 编辑模式:默认模式; 编辑模式-->输入模式; i:insert,在光标所在处输入; a:append,在光标所在处后面输入; o:光标在所在处下方打开的新一个行; I:在光标所在行的行首插入; A:在光标所在行的行尾输入; O:在光标所在处的上方打开一个新行; 输入模式 -->编辑模式 ESC键 编辑模式 --> 末行模式 : 末行模式 --> 编辑模式 ESC键 关闭文件: ZZ:保存并推出;编辑模式下 :q 退出 ;末行模式下 :q! 强制退出;不保存此前的编辑操作 :wq 保存并退出; :x 保存并退出; :w /PATH/TO/SOMEFILE 写入到指定的文件中; 光标跳转: 字符间跳转 h(左),j(下),k(上),l(右) #CMMAND:跳转指定个数的字符 单词间跳转 w:下一个单词的词首 e:当前或下个单词的词尾 b:当前或前一个单词的词首 #CMMAND:跳转指定个数的字符; 行首行尾跳转 ^:跳转至行首第一个非空白字符; 0:数字0跳转至绝对行首; $:跳转至绝对行尾 行间跳转 #G:跳转至由#指定的行; 1G,gg:第一行 G:最后一行 句间跳转 ):句尾 (:句首 段间跳转 }:段尾 {:段首 翻屏: Ctrl+f:向文件尾部翻一屏 Ctrl+b:向文件首部翻一屏 Ctrl+d:向文件尾部翻半屏 Ctrl+u:向文件首部翻半屏 Enter:按行向后
vim的编辑命令:
vim的编辑命令: 字符编辑 x:删除光标所在处的字符; #x:删除光标所在处起始的#个字符 xp:交换光标所在处的字符与其后面的字符的位置; 替换命令(replace) r:替换光标所在处的字符; rCHAR 删除命令 d:删除命令,可结合光标跳转字符,实现范围删除 d^ d$ dw de db #dCOMMAND dd:删除光标所在处的行; #dd:删除光标所在的行起始的共#行; 粘贴命令(p,put,paste) 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 撤销(undo)操作: u:撤销此前的操作,最多50个,保存在缓冲区 #u:撤销此前的#个操作; 撤销此前的撤销操作: Ctrl+r: 重复执行前一个编辑操作 . 点号 vim自带的练习教程:vimtutor
vim末行模式:
vim末行模式: 内建的命令行接口 (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 /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置; r # /PATH/FROM/SOMEFIL 在第#后插入读取到的文件内容 (2)查找 /PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串; /?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串; n:上一个,与命令方向相反 N:下一个 (3)查找并替换 s:末行模式下,使用格式 s/要查找的内容/替换为的内容/修饰符 要查找的内容:可使用正则表达式; 替换为的内容:不能使用正则表达式,但可以引用;而它的引用机制有2种: 如果"要查找的内容"部分子在模式中使用分组符号:在"替换为的内容"中使用后向引用; 直接引用查找模式匹配到的全部文本,要使用&符号; 修饰符:主要用来修饰查找到的内容的 i:忽略大小写 g:全局替换,意味着一行如果匹配到多次,则均替换; 可把分隔符替换为其他非常用字符: s@@@ s### 示例 %s@\<t\([[:alpha:]]\+\)\>@T\1@g %s@\<t[[:alpha:]]\+\>@&er@g 练习: 1、复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符; %s@^[[:space:]]\+@@ 2、复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加上#; %s@^[[:space:]]\+[^[:space:]]@#&@g 3、为/tmp/grub2.cfg文件的前三行的行首加上#号; 1,3s/^/#/ 4、将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1; %s@\(enabled\|gpgcheck\)=0@\1=1@g
vim的多文件功能:
vim的多文件功能: 多文件 vim FILE1 FIEL2... 大文件间切换: :next 下一个 :prev 前一个 :first 第一个 :last 最后一个 退出所有文件: :wqall 保存所有文件并退出 :wall :qall 多窗口: -o:水平分隔窗口 -O:垂直分隔窗口 窗口间切换Ctrl+w,方向键 注意:单个文件也可以分割为多个窗口进行查看: Ctrl+w,s :水平分隔窗口 Ctrl+w,v:垂直分隔窗口
定制vim的工作特性:
定制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、高亮搜索highlinesearch 启用:set hlsearch 禁用:set nolsearch 5、语法高亮 启用:syntax on 禁用:syntax off 6、忽略字符大小写 启用:set lc 禁用:set nolc 获取帮助: :help :help subject 如何设置tab键缩进4个字符: set ts=4 set expandtab
参考:http://zhangjianjian.blog.51cto.com/2944771/625003