发布时间:2015-02-02 18:29:42作者:知识屋
Vi是一个常用的linux下文本编辑器,基本所有的类Unix系统都会默认装有vi编辑器,所以只要学通了vi,则可以在任意linux上进行文本操作。在控制台里敲入"vi filename"即可启动vi编辑器,如果该file已经存在,则编辑已存在文件,如果不存在,则创建新的文件。vim是升级版的vi,除了具有vi的所有功能,还具备一些特有的功能,后面我们会一一介绍。
常用命令< http://www.zhishiwu.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD48cD48dGFibGUgd2lkdGg9"851" height="1453"> 使用vim的时候,如果vim因一些不确定的因素非正常退出,而我们又有些未保存的数据,这时不用担心,vim提供文件恢复的功能,在我们打开一个文件的时候,同时会有一个filename.swp文件,这个文件里记录了我们队原文件的修改记录,如果vim非正常退出,当我们再次打开原文件时,vim会做出提示如下: O:表示以只读方式打开 E:表示正常打开文件进行编译,不载入.swp文件里暂存的数据 R:表示加载暂存的数据,恢复到上一个状态 D:删掉暂存文件 Q:直接退出 A:忽略,和Q类似 1. vim具有行号,我们可以设置vim的行号的显示,只需要使用:set nu和:set nonu进行行号的显示与取消即可。 2. vim具有颜色高亮显示功能,对于常用的特殊格式的配置文件,编程语言的文件,vim可以对关键字进行高亮,这样我们在编辑的时候就不容易出错了。 3. 块选择 块选择可以让我们一次性操作一块文件,而非一行。模式 命令 解释 备注 一般模式 h 或者左箭头 光标向左移动一个字符 j 或者下箭头 光标向下移动一个字符 k 或者上箭头 光标向上移动一个字符 l 或者右箭头 光标向右移动一个字符 注意:如果想一次移动同一个方向上多行,可以使用:“数字h/j/k/l”来做,如:“10j”或者“10下箭头”表示向下移动10行 Ctrl + f Page Down, 屏幕向下移动一页 常用 Ctrl + b Page Up, 屏幕向上移动一页 常用 Ctrl + d 屏幕向下移动半页 Ctrl + u 屏幕向上移动半页 加号+ 光标移动到非空格的下一行 减号- 光标移动到非空格的上一行 n+空格 n表示数字,表示光标向后移动n个字符 数字0或者Home键 移动到这一行最前面 常用 $或者End键 移动到这一行最后面 常用 H 移动到当前屏幕的最上一行最左边第一个字符 M 移动到当前屏幕的最中间一行最左边第一个字符 L 移动到当前屏幕的最下一行最左边第一个字符 G 移动到当前文件的最后一行 常用 nG 移动到当前文件的第n行 常用 gg 移动到当前文件的第一行 n + Enter 常用 查找和替换 /word 向下查找word字符串 常用 ?word 向上查找word字符串 n 重复上一个查找 N 反向重复上一个查找 :n1,n2s/word1/word2/g 在n1行和n2行之间,将word1替换成word2 常用 :1,$s/word1/word2/g 从第一行到最后一行,将word1替换成word2 常用 :1,$s/word1/word2/gc 从第一行到最后一行,将word1替换成word2, 常用 删除、复制、粘贴 x,X x向后删除,相当于Delete键,X向前删除,相当于Backspace键 常用 nx/nX n为数字,表示连续向后/向前删除n个字符 dd 删除光标所在的那一整行 常用 ndd 删除光标所在行向下n行 常用 d1G 删除光标所在行到第1行所有数据 dG 删除光标所在行到最后一行所有数据 d$ 删除光标所在处到该行最后一个字符 d0 删除光标所在处到该行最前面一个字符 yy 复制光标所在的一行 常用 nyy 复制光标所在的行的下面n行的数据 常用 y1G 复制光标所在行到第一行的数据 yG 复制光标所在行到最后一行的数据 y0 复制光标所在行光标到行首的所有字符 y$ 复制光标所在行光标到行尾的所有字符 p,P p将已复制的数据粘贴到光标所在行的下一行 常用 J 将光标所在行与下一行结合成一行 c ncj n为数字,表示连续向下删除n行 u 复原前一个操作,相当于撤销Ctrl + z 常用 Ctrl + r 重做上一个操作,相当于重做Ctrl + y 常用 . 小数点,重复前一个操作 常用 一般模式->编辑模式 i, I i为从光标所在处插入,I为从所在行第一个非空字符处插入 常用 a, A a为从光标所在处下一个字符处插入 常用 o, O o为从所在行下一行插入,O为从所在行上一行插入 常用 r, R r替换光标所在的字符一次,R一直替换光标所在的字符直到ESC 常用 ESC 退出编辑模式回到一般模式 常用 一般模式->命令模式 :w 保存,相当于Ctrl + s 常用 :w! 若文件为只读,强制写入,能否成功要看权限 :q 离开vi 常用 :q! 不保存强制离开 常用 :wq 保存并且离开vi 常用 ZZ 若文件没有变化,直接离开,若有变化则保存后离开 :w[filename] 另存为 常用 :r[filename] 在光标所在处插入另一个文件的内容 :n1,n2 w [filename] 将n1行到n2行的内容保存到filename文件里 :! command 暂时离开vi到命令行模式下查看command的执行效果 :set nu 显示行号 :set nonu 取消行号 文件的保存和恢复
vim特色功能
v 字符选择,选择光标经过的地方 V 行选择,选择光标经过的行 Ctrl + v 块选择,选择光标经过的矩形 y 复制上述方法选择的数据 d 删除上述方法选择的数据
我们实践一下这个块选择的功能,新建2个文件ip1, ip2, ip1里存放
192.168.1.111 aaaa hello
192.168.1.112 bbbb world
如果我们想实现直接将aaaa,bbbb复制到hello和world后面怎么 做?请看下面的步骤:
1. 在命令行模式下按Ctrl + v,移动光标进行选择。
按下y,将光标移动到hello的后面再按p就实现了。
vim允许我们进行多个文件同时编辑,我们新建2个文件ip1, ip2, ip1里存放:
192.168.1.111 aaaa
192.168.1.112 bbbb
ip2里存放:
hello
world
如果我们想将ip1里的内容复制到ip2里,又不想打开多个窗口的话,那就采用多文件编辑的功能。
a. 用命令vim ip1 ip2同时打开两个文件
b. 用:files查看打开的文件
c. 输入2yy复制2行数据
d. 在一般模式下,输入:n切换到第二个文件
按G到最后一行,再按p进行粘贴,就好了。
:n | 编辑下一个文件 |
:N | 编辑上一个文件 |
:files | 查看打开的文件 |
5. 多窗口编辑
当我们想在编辑文件的时候,参考另一个文件,要么采用上一条说的多文件编辑,但是无法方便的对照,要么就采用下面的方法:多窗口编辑。在一般模式下输入:sp filename,filename可以不加,控制台就会分割成两个,继续:sp filename就会继续添加