vi/vim编辑器

2019-10-27 0 条评论 782 次阅读 0 人点赞

有一少部分人人觉得这是装逼,而有些人则默默的使用他完成自己的种种文本处理工作,


用过Linux应该没有不知道vi/vim编辑器的吧,它是一款功能特别强大的文本编辑软件,第一次看到这个工具的介绍时,我都震惊了,在只能输英文字母的界面上我们还可以这样操作,同时也对软件的设计者有着深深的崇拜之情,原谅我的词穷,无法用文字来表达我对这款软件的喜爱之情,vim是vi的增强版,由于本人一直都用的是vim,所以以下都是对于vim的介绍,当然vim只是比vi增加了不少功能,软件的作者是一个叫布莱姆·米勒的荷兰程序员在1991年发布的,这个软件其实在Windows下也可以使用,其源代码现在也托管在GitHub上面:github.com/vim/vim官方网站为:www.vim.org下面就简单的总结一下这个软件的使用方法

首先要介绍一下vim的三种模式: 命令模式,编辑模式,扩展命令模式

命令模式:是vim的默认模式,在这个模式下你可用一些特定含义的字符来进行复制,粘贴,定位光标等一系列操作
插入模式:这个容易理解了,就是编辑文本文件
扩展命令模式:这个主要是可以输入一些vim自有的命令,来完成一些高级功能
想要使用vim打开一个文件非常简单,只需要在命令提示符中输入vim file_name即可打开,当然vim打开的时候也可以使用一些特定的选项:

选项作用
-d打开多个文件做比较
-m以只读方式打开
-e直接进入扩展命令模式
+n打开后光标定位到第n行
+pattern打开光标后定位到第一个匹配到行的位置

在打开的时候默认进入的是vim的命令模式,下面就详细的介绍各个模式下的操作:
命令模式
​ 首先介绍一下进入编辑模式的几种操作:

​ i:进入到插入模式

​ I:进入到插入模式,并且光标移动到行首

​ a:进入插入模式后,光标移动到后一个字符

​ A:进入插入模式后,光标移动到行尾

​ o:切换到插入模式,并且在当前行下方插入一个空行,并且光标移动到空行

​ O:这个就很简单了,在当前行上方插入空行
注意:现在的设定还是在命令模式下,再介绍一些其他的操作

光标跳转:

命令作用
h,j,k,l:这四个字母分别代表,光标向左,下,上,右移动,虽然看起来没有什么规律,其实他是在你键 盘右手自然放置的位置,我们还可以在按下这几个字母之前加一个数字,就代表移动若干行或字符,比如说向上移动5行可以按,5k,下面的介绍中很多都支持这种操作,以下就把这种操作叫NCOMMAND操作(这是我自己起的).
w光标移动到下一个单词的词首,支持NCOMMAND操作
e光标移动到下一个单词的词尾,如果光标不在当前单词词尾则第一次移动到当前单词词尾,支持NCOMMAND操作
b光标移动到当前单词词首或上一个单词词首,支持NCOMMAND操作
^移动到当前行非空格的行首
0移动到行首
$移动到行尾
nG跳转到第n行
G跳转到末尾行
H光标跳转到当前屏幕的最上面
L光标跳转到当前屏幕的最下面
M光标跳转到当前屏幕的中间
Ctrl+f向后翻一屏
Ctrl+b向前翻一屏
Ctrl+d向后翻半屏
Ctrl+u向文件首部翻半屏

编辑命令:

命令作用
x删除(其实是剪切)光标处的字符,支持NCOMMAND操作
p粘贴
xp交换光标和光标后面字符的位置
d剪切命令,如果不粘贴就实现了删除操作单是一个d没有任何效果,可以结合上面的跳转命令剪切字符或者行,支持NCOMMAND操作
d$从当前位置剪切到行尾,,NCOMMAND示例:5d$,从当前位置删除到下5行尾
d0从当前位置剪切到行首
dw剪切到下一个单词首,支持NCOMMAND操作
de剪切到单词尾,支持NCOMMAND操作
db剪切到单词首,,支持NCOMMAND操作
y复制命令,和d命令操作逻辑一样,这里就不再一一列举了
yy复制一整行
cc删除当前行,并进入编辑模式,支持NCOMMAND操作
u撤销命令,支持NCOMMAND操作
U恢复当前行,使之成为编辑前的状态,当然移动光标后就不能使用该操作了
Ctrl+r撤销上一个撤销操作
.重复前一个操作

以上就是一些经常会用到的命令,下面开始介绍扩展命令模式
想进入扩展命令模式其实特别简单,只要在命令模式下输入:就进入了扩展命令模式了,你会发现在屏幕的左下方会有一个冒号在冒号后面就可以输入命令了,输入完成之后按回车键执行,接下来就介绍一些经常会用到的命令
地址定界:就是在扩展命令下定位光标位置,以及对文件中的哪些行进行操作
​ n:定位到第n行
​ m,n:从第m行到地n行,当需要编辑这几行的内容时可以这样写
​ n,+m:从当前行开始之后的m行
​ .:表示当前行
​ $:表示最后一行
​ %:全文
​ /pattern1/,/pattern2/:从第一个模式匹配到的第一行到第二个模式匹配到的第一行
​ 地址定界之后可跟上面的编辑命令,比如1,5d表示删除第一到五行
另存文件:
​ w /path/to/newfile 将文件另存到其他地方,当然前面也可以跟地址定界,把指定的行存到另外的文件中
​ r /path/to/otherfile 将另外文件中的内容读取到当前行
替换:这个也是经常会用到的
​ %s/a/b/可选选项
​ 前面也可以跟地址定界,s是关键字/是分隔符,可以用其他字符表示,a是要替换的内容,可以使用正则表达式b是替换为的内容&前面要替换的内容,可选选项主要有i,g.i表示忽略大小写g表示全局替换,默认情况下,在一行中替换了一次就不再在该行中进行替换了,g可将该行中所有符合的都替换
下面再介绍几个配置vim特性的常用命令
​ 显示行号:set number,可以简写为set nu,如果想取消可以使用set nonu
​ 高亮括号匹配:set showmatch 简写为set sm
​ 自动缩进:set ai
​ 高亮搜索结果:set hlsearch
​ 语法高亮:syntax on/off
​ 忽略字符大小写:set ic
这里只是列举了几个,还有很多很多,当然这样中配置只能在当前vim进程中有效,如果想全局有效的话当然是得写入到vim的配置文件中了,对于vim也不例外有两个配置文件,个人~/.vimrc和全局配置文件/etc/vimrc,你可以查阅官方文档来对vim进行你自己的个性化定制
另外介绍vim的一个炫技的技能:打开多个文件,可以使用vim后加多个文件名来打开多个文件,当然打开的时候显示的是第一个文件可以使用:next切换到下一个文件,:prev切换到上一个文件:first切换到第一个文件,:last切换到最后一个,:qall退出所有文件,:wall保存所有,:wqall保存并退出所有,如果你觉得这种方法不好用可以在打开时使用-o或-O选项来打开文件,这样文件就会以水平或者垂直的方式显示在同一个屏幕上,如下图:
vim01.png
当然这时我们还需要另外一个技能就是将光标切换到不同的窗口中,那就可以用Ctrl+w然后按上下左右键切换到不同的窗口中
如果你觉得vim非常难学,那么作者还非常贴心的写了一个练习工具:vimtutor,打开之后是一个vim的说明文档,当然是用vim打开的,你可以在里面边看文档边的折腾他,
最后总结一下,vim的强大之处关键的一点在于他的命令可以组合着使用,比如你在编辑模式下输入了一个单词后,然后返回到命令模式输入100然后按下.他就会将你刚才输入的那个单词重复100遍
最后再展示几张网上找到的vim的键位图:
advanced1.png
entry1.png
morden1.png
参考资料
一个中文的vim文档
开头的图片

bighero

这个人太懒什么东西都没留下

文章评论(0)