11 vim文本编辑器
和sed相比,sed为字处理器(行编辑器),将文本逐行放入到模式空间(也就是内存)中进行处理,并显示在屏幕上。而vim、vi以及nano都是全屏文本编辑器,而vim则是vi的加强版本,相对于vi,vim则拥有特殊字符着色的功能,也是最为常用的功能; 本节我们重点介绍vim编辑器的常见用法; vim文本编辑器详解*Linux系统的核心就是通过文本来存储所有的软件配置文件*,所以,能够熟练的掌握文本编辑器对于学习Linux系统而言是至关重要的。 vim编辑器作为vi编辑器的升级版,它将伴随我们学习Linux系统的整个过程! vi:Visual interface可视化接口; vim:VI iMproved vi的增强版;【vim编辑器实现是语法自动着色,方便我们判断自己缩写的语句是否正确】 vim的模式vim编辑器分为三种模式(这点和vi编辑器相同),编辑模式(命令模式),输入模式,末行模式; 在我们通过vim进入文本的时候,默认处于编辑模式。 模式切换: 编辑模式 -> 输入模式 i 在当前光标所在字符的前面,进入输入模式; ?? a 在当前光标所在字符的后面,进入输入模式; o 在当前光标所在行的下面重启一行,进入输入模式; I 在当前光标所在行的行首,进入到输入模式(自动将光标移动到当前行行首); A 在当前光标所在行的行尾,进入到输入模式(自动将光标移动到当前行行尾); O 在光标所在字符的上一行,转换为输入模式(和 o 正好相反); 输入模式 -> 编辑模式 ESC键 编辑模式 ->末行模式 输入 “:” 即可 在输入模式下可以关联vim的相关命令对文本进行编辑,或者切换光标位置: 例如:5d #删除第5行 ? 10,20d #删除第10行到20行,总共删除11行 ? set nu #显示行号 ? ! ls /etc #在vim下关联shell命令 【以上操作都是我们比较常用的操作】 末行模式 -> 编辑模式 ESC键 【三种模式之间的切换要注意一点:输入模式不能和末行模式之间直接切换,必须通过编辑模式来进行切换!】 模式切换总结如下图: ? vim下的常见操作一、文本打开方式 首先 vim /path/FILE 可以直接打开文件; 特殊使用方式: vim +数字 /path/FILE 可以打开文件,且直接将光标定义在数值指定的行; vim + /path/FILE 打开文件,将光标处在文件的末尾; vim +/string /path/FILE 打开文件,且将光标定义在string字符串处,类似于查找功能; ? 二、文本关闭方式 1、常见关闭文本都是在末行模式下进行 :q 表示退出文本,不保存; :wq 保存并退出文本; :q! 如果修改了文本,不想保存,则通过 :q! 来强制退出文本; :w 只保存,不退出文本; :w! 强制保存文本,这个权限只有管理员root才拥有; 2、在编辑模式(命令模式)下退出文本 ctrl+z 退出文本,但是不保存 ZZ 保存并退出文本 ? 三、光标移动 注意:以下操作均处于编辑模式(命令模式)下运行; 1、逐字符的移动光标: j 下 k 上 h 左 l 右 【这个“上下左右”要更加好于键盘的“上下左右”,它更加的方便】 结合数字来使用,既可以同时移动多行,例如:5j 向下移动5行;6l 向右移动6个字符; 2、按照单词为单位来移动光标 w 光标处于单词首部,以单词为单位向后移动 e 光标处于单词尾部,以单词为单位向后移动 b 光标处于单词首部,以单词为单位向前移动 同理,可以结合数字来使用:5e 向后移动5个单词位;10b 向前移动10个单词位; 3、行内跳转 0 表示跳转到行首(不包含制表符) ^ 表示跳转到绝对的行首 $ 表示跳转到行尾 4、行间跳转 数字G 指定跳转到那个固定行,例如:5G 表示跳转到第5行; G 如果不加数字,则是直接跳转到最后一行; 【末行模式下,也可以进行行间跳转;例如: “:5” 表示跳转到第5行;】 ? 四、翻屏 编辑模式下: ctrl+f 向下翻一屏 ctrl+b 向上翻一屏 ctrl+d 向下翻半屏 ctrl+u 向上翻半屏 ? 五、删除操作 删除单个字符 x 删除光标所处的单个字符; 数字x 和之前移动光标原理相同,可以删除“数字”个字符;例如:5x 删除5个字符; 删除命令--d dw 删除光标所在的那个单词; 数字dw 删除“数字”个单词,从当前光标开始算起; dd 删除当前行; 【在末行模式下,可以删除多行“:StartADD,EndADDd”删除startadd到endadd行;这里记住一个特殊符号:. (点,表示当前行),例如: :.,$-3d? 这表示删除当前行到倒数第4行之间的所有内容;如果说要删除删除当前行到向下数十行的内容呢? :.,+10d 其中,+ 号表示向下多少行的意思,+多少,就是向下多少行】 【vim下删除内容的时候要注意:删除的内容不会被立刻清除,还可以恢复删除的内容,最近一次删除的内容可以复制或者剪切到其他的地方,通过p命令粘贴到别的地方】 ? 六、复制--y 复制的用法基本与删除用法相同 其中 yy 复制当前行使用最为多; 数字y 表示复制从当前光标单词算起,复制多少个单词;5y 复制5个单词; ? 七、粘贴--p和P P:如果删除或复制的内容为整行的内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行内容,则粘贴在光标的前方; p:如果删除或复制的内容为整行的内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行内容,则粘贴在光标的后方; ? 八、修改--c 先删除掉内容,再转换为输入模式: cc 删除当前行后,直接进入输入模式进行编辑; c$ 删除当前光标到末行的内容,在直接转入到输入模式进行编辑; 【cc 和 c$ 是比较常见的两种用法】 ? 九、替换--r 替换操作一般用于单个字符的操作: r字符或数字 将光标所在字符替换为输入的字符或数字; ? 十、撤销--u u 撤销前一次的操作,连续桥u命令,则是撤销此前的n次操作;默认情况下最多撤销前50次操作; 数字u 直接撤销前“数字”次操作;例如,5u 撤销前5次的操作; 【取消最近一次撤销的操作则为 ctrl+r】 ? 十一、重复前一次的操作--. . (点)这个符号就表示重复上一次的编辑操作 例如:dd 删除了当前行,此时一致敲 . 则表示重复 dd 的命令; ? 十二、可视化模式(标记内容)--v和V 进入可是化模式,通过移动光标来选择要编辑的内容; v 表示按照字符来选取内容 V 表示按照行来选取内容 选择了对应的内容以后,再进行复制,删除等等操作; ? 十三、查找,以及查找并替换 查找: 这个内容则和less命令的类似,就不在多说
/PATTERN 从前面往后面找
?PATTERN 从后面往前面找
【支持正则表达式】
n 下一个
N 上一个
查找并替换: 查找到对应的内容后,可以进行替换操作,这里和sed名的格式有点类似: ADDR1,[email?protected]@[email?protected] #其中ADDR1,ADDR2表示要替换的范围,s可以理解为sed命令,pattern选择出要替换的字符串,替换为后面的string,最后g表示全局替换,而i则表示不区分大小写 例如: :.,[email?protected]@[email?protected] #从当前行到倒数第二行,中的he全部替换为HE 【1,$表示全文范围,也可以通过%来表示全文范围】 ? 练习:将/etc/yum.repos.d/server.rpo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum vim /etc/yum.repos.d/server.rpo :%[email?protected]://inistructor.example.com/[email?protected]://172.16.0.1/[email?protected] ? 十四、同时编辑多个文件 vim是可以支持跨文件编辑的(例如,将file1中的内容复制粘贴到file2中去) vim FILE1 FILE2 FIEL3 #在vim后面接上多个文件的时候,实际上是打开了FILE1,FILE2,FILE3三个文件,但是显示只显示了FILE1的内容。 在末行模式下: :next 切换到FILE2或后者其他文件 :prev 切回到FILE1或则前面的文件 :last 切换到最后一个文件 :first 切换到第一个文件 :q 只能退出当前文件,如果想退出所有文件,则需要使用 :qa 退出所有文件 ? 十五、分屏显示同一个文件--ctrl+w [s|v] 或者 -[o|O] 上面我们说到了同时打开多个文件,但是不在同一个屏幕上面显示,如何才能让屏幕同时显示多个文件呢? ctrl+w松开后,再按s 水平分割窗口 vim -o FILE1 FILE2 ctrl+w松开后,再按v 垂直分割窗口 vim -O FILE1 FILE2 ctrl+w松开后,再按w或是小键盘上下左右 切换光标所在文件 ? 十六、将当前文件中部分内容另存到另外一个文件中--w 在末行模式下进行操作: 例如: :.,+5w /path/somefile #保存当前文件光标所在行,到接下来5行的内容保存到另外一个/path/somefile文件中去; ? 十七、将另外一个文件的内容填充到当前文件中--r 在末行模式下进行操作: 例如: :r /etc/inittab #将/etc/inittab文件的内容填充到当前文件光标所在的地方; ? 十九、调用shell脚本程序(调用命令)--! 在末行模式下进行操作: 例如: :! ls /etc #这样就可以直接在vim编辑器中去运行ls /etc的命令; ? 二十、高级操作 1、显示或取消行号 :set number 也就是简写为 :set nu :set nonu 取消行号 【默认情况下是没有行号的,我们所如果想默认进来就看到行号,就必须去修改vim的配置文件】 2、是否忽略大小写 :set ignorecase 也就是简写为 :set ic :set noignorecase 3、设置自动缩进功能 默认情况下回车后是没有缩进的 :set autoindent 也就是简写为 :set ai? :set nohlsearch 4、查找到的文本的高亮显示与取消 语言着色功能,默认开启(也叫做高亮显示) :set hlsearch :set nohlsearch #关闭高亮显示 5、语法着色功能(vim默认开启) :syntax on :syntax off #关闭语法着色功能 ? 二十一、vim的配置文件 /etc/vimrc #为所有shell下的主配置文件,修改这里的配置文件,则在所有bash程序下生效; ~/.vimrc #各个用户的家目录下去编辑这个文件(没有的可以自己创建),则只在本bash进程下,对vim的编辑才生效 vim导师(vim的帮助文件)vimtutor #vim编辑器的教程,这里有心的朋友可以自己慢慢去看; vim编辑文件时非法退出时遇到的问题如果在你编辑文件的时候,突然关闭了该shell程序,并不是通过 :q 或者 ZZ 正常退出的文件,则会在当前被编辑文件的同一个目录下生成? .swp? 的隐藏文件文件; 当你再次想编辑这个文件时候则提示如下: 这里提示您上次在 dated 时间的时候进行过编辑,您是否继续编辑; O表示打开该文件,但是只读,E表示编辑这个文件,R表示覆盖这个文件重新编辑,D则是删除上次编辑的内容,重新再进行编辑,A则是表示退出并终止; 此时,我们只需要按E进去正常保存,这样我们之前编辑的内容就不会丢失,再删除掉? .swp 的隐藏文件即可; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |