[版权申明]非商业目的注明出处可自由转载
出自:shusheng007
概述
照例先嘚嘚几句,如果你用惯了基于菜单和工具栏的文本编辑器,例如大名鼎鼎的Notepad++,突然使用基于命令行的文本编辑器一时会感觉无从下手。记得我第一次使用Vim修改一个配置文件时,噼里啪啦一顿敲键盘,但是一个字母都都没有输入进去,当时又急着改文件,心中那个恨啊:“什么jb玩意,我r!”。但是能怎么办呢,气归气,还是先google一下,把问题解决了再说。原来世界上很多产品的思路是不同的,所以长期在一种环境下就容易养成惯性思维,思路就不那么灵活了,所以说我们应该勇于接受新事物,借鉴其独到的思维模式。
今天我们就简单入门一下Linux环境下非常流行的文本编辑器Vim
本文目标及内容
目标:看完此文后至少可以使用Vim完成一般的文件编辑需求。
- Vim 简介
- Vim 模式介绍
- Vim 常用功能实践
Vim 简介
Vim 是一款在Linux环境下很流行的基于命令的文本编辑器。Vim 在最开始的时候代表 Vi IMitation 即Vi的仿制品,但是从1993后改名为Vi IMproved,即Vi的改进版。
顾名思义,不管是Vi的仿制品还是改进版,Vim都是基于Vi的,这点跑不了。Vim是基于命令行的,所以键盘的输入效率非常高,话说美国大片上的黑客好像从来不用鼠标。
Vim还支持插件,这样就可以通过插件为其增加新的功能。
Vim还有自己的脚本语言VimScript
,好像很牛逼,不过一般的使用用不到。
Vim 自带一个教学器 Vimtutor, 你可以在里面练习Vim的各种操作, 使用如下命令打开:
sudo vimtutor
输出如下图所示
Vim 模式简介
要想使用Vim必须先理解其各种模式。 Vim的模式是什么呢?简单理解就是一种状态,某些操作只能在这种状态下执行。例如王二狗对他女朋友牛翠花说:翠花,我要切换到工作模式了,你就不要再问我你穿哪件衣服看好的问题了,我是不会理你的。
据Vim的Wiki介绍,Vim存在12种不同的模式,可以归纳为6中基本的模式,不过还是有点多。我们这篇文章是实战入门的,所以不准备介绍这么多,只介绍最常用的3个,即二八定律的那个八,学会这个八已经足以应对大部分日常使用。
Normal Mode
打开文件后默认会进入这个模式,在这个模式里我们可以控制屏幕光标的移动,对字符或行的删除,替换单个字符,撤销操作以及重做某一系列操作等。这个模式非常重要,我们大部分时间都会呆在这个模式里,你应该把它看作是操作的锚定页面。
在其他模式按Esc
键进入此模式。
Insert Mode
只有在这个模式下才可以输入,如果你要输入内容必须切换到这个模式下。
在Normal Mode下按下i
键进入此模式。
Command Mode
这个模式也很常用,其是Normal Mode 的补充,在Command Mode下可以完成非常复杂的功能,像什么全文查找,替换,保存文件等等。
在Normal Mode下按下冒号:
键进入此模式。
除了以上3种常用的模式还有Visual 、Select 、Ex 3种模式 ,有兴趣的同学可以查阅相关资料。
Vim基本操作实践
打开Vim
vim 后面加文件名即可,如果文件已经存在则打开,否则创建新的文件。如下面命令所示:
sudo vim HelloVim.txt
回车后就进入了Vim 的Nomal Model 了。
在Vim中导航
使用Vim打开一个文件后首先面临的就是如何导航光标,即让光标上下左右的移动。最容易想到的就是使用方向键,恭喜你这个确实可以这么干,但是Vim还提供了另一套更高效的按键。
在 Normal Mode下:h: 左 l: 右 k:上 j:下
在Insert Mode 下:直接使用方向键,或者切换到 Normal Mode下导航,然后在切换回Insert Mode。
编辑文件
前面说过,只有处于Insert Mode时才可以输入,从Nomal Model 按一下键盘的小写的 i
键就会切换到输入模式。左下角会出现 -- INSERT --
的提示后,就可以像使用普通编辑器编辑文件了。
一般情况下使用 i 键进入插入模式就足够了,但是vim给了你更多选择:
- i : 光标停留在当前位置
- a :光标移动到下一个字符
- o :从当前光标所在行下面插入一新行,光标移动到此行行首
如果将上面3个命令变成大写会怎么样呢?
- I: 光标移到行首
- A:光标移到行尾
- O:从当前光标所在行上面插入一新行,光标移动到此行行首
退出及保存文件
退出及保存文件命令要在 Command Mode 下完成,还记得怎么进入此模式吗?
- 按
Esc
键切换到 Normal Mode - 输入冒号
:
即可进入Command Mode
在命令行模式下,输入 wq
回车即可。
退出及保存文件有如下几个命令
- :w filename 文件以filename为文件名保存
- :wq 文件存盘并退出vim
- :q 文件不存盘并退出vim
- :q! 文件不存盘强制退出vim
note : q 表示quit ,w 应该表示write吧,待确认
其他实用命令
有了以上三个命令已经可以处理文本编辑工作了,就是效率低了点,我们接下来介绍几个日常很常用的可以提高工作效率的命令
查找
切换到 Normal Mode下,输入斜杠 /
,然后输入要搜索的文字即可,大小写敏感。
使用小写 n
向下查找相同的匹配,使用大写 N
向上查找
配对括号查找:
在编程语言里,配对括号 { } 很常见,当定位到一个配对括号的一半时(注意光标要定位在该括号之前),按百分号 %
,即可自动跳转到与之匹配的第一个配对括号处。
替换
首先替换要在Command Mode 下完成,首先进入此模式
-
替换当前行
s/old/new/g
s: substitute 替换
old: 要被替换的字符
new: 新的字符
g: global 全局 -
替换指定行
替换两行之间的所有匹配文本,两个# 表示首尾行号(行号在右下角可以看到)#,#s/oldstring/newstring/g
例如我将使用
:4,11s/ok/ok leijun
命令加如下文本中的ok换成
ok leijun
输出结果如下,可见4到11行之间的匹配文本都被替换了
- 全文替换
使用如下命令直接进行全文替换
%s/oldstring/newstring/g
如果你怕出错想在替换前确认一下,就是要如下命令
%s/oldstring/newstring/gc
那么在替换之前Vim会询问你是否要替换。
replace with *** (y/n/a/q/l/^E/^Y)?
其中%表示所有行
撤销与重做
输入小写字母 u
撤销上一步的操作
Ctrl+R 重做,即恢复上一步撤销的动作
删除
如果在 Insert Mode 下操作,那就按普通编辑器那样删除就好了。
如果是在Normal Mode 下,花样还是挺多的:
-
以单词删除
dw:把光标停留在需要删除的单词前面,依次按下d,w即可,值得注意的是,空格也算单词。
de:把光标停留在需要删除的单词前面(无视单词前面的空格),依次按下d,e即可 -
使用计数以删除单词
这个个人觉得不是特别实用,不看也无所谓,这里只简单提一下,例如下面的命令d 2 w
会删除光标后面的2个单词
-
删除当前行
连续输入两个小写字母 d 即可
跳转
如果文本很长的话,只使用光标上下导航会特别慢,此时我们可以使用跳转命令
首先进入Normal Mode :
- 跳转到文本首行行首
输入Ctr + g 然后连续输入两个小写 g - 跳转到文本尾行行首
输入Ctr + g 然后输入大写 G - 跳转到特定行
输入行号,然后输入 大写 G
总结
文章到此也该结束了,相信看到这里的你应对Vim日常使用,至少上手已经不成问题了。 本文为工具型教程,建议点赞收藏,以后肯定用的着,到时候又找不到了。最后如果你觉得我还不错,也希望你关注我,我会不定时写一些IT方面的文章,每篇都是我亲自上手过得,绝不会去简单copy一些文章误人子弟。
祝愿广大程序员五一快乐。
参考文章:
Vim基本使用方法
Vim Editor Modes Explained
文章评论