秒懂Linux 之Vim编辑器快速上手

【版权申明】非商业目的注明出处可自由转载
博文地址: http://shusheng007.top/2020/05/03/02/
出自:shusheng007

概述

照例先嘚嘚几句,如果你用惯了基于菜单和工具栏的文本编辑器,例如大名鼎鼎的Notepad++,突然使用基于命令行的文本编辑器一时会感觉无从下手。记得我第一次使用Vim修改一个配置文件时,噼里啪啦一顿敲键盘,但是一个字母都都没有输入进去,当时又急着改文件,心中那个恨啊:“什么jb玩意,我r!”。但是能怎么办呢,气归气,还是先google一下,把问题解决了再说。原来世界上很多产品的思路是不同的,所以长期在一种环境下就容易养成惯性思维,思路就不那么灵活了,所以说我们应该勇于接受新事物,借鉴其独到的思维模式。

今天我们就简单入门一下Linux环境下很是流行的Vim文本编辑器

本文目标及内容

目标:看完此文后至少可以使用Vim完成一般的文件编辑需求。
内容:

  1. Vim 简介
  2. Vim 模式介绍
  3. 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种常用的模式还有VisualSelectEx 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 下完成,还记得怎么进入此模式吗?

  1. Esc 键切换到 Normal Mode
  2. 输入冒号 : 即可进入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 下,花样还是挺多的:

  1. 以单词删除
    dw:把光标停留在需要删除的单词前面,依次按下d,w即可,值得注意的是,空格也算单词。
    de:把光标停留在需要删除的单词前面(无视单词前面的空格),依次按下d,e即可

  2. 使用计数以删除单词
    这个个人觉得不是特别实用,不看也无所谓,这里只简单提一下,例如下面的命令

    d  2 w

    会删除光标后面的2个单词

  3. 删除当前行
    连续输入两个小写字母 d 即可

跳转

如果文本很长的话,只使用光标上下导航会特别慢,此时我们可以使用跳转命令

首先进入Normal Mode

  • 跳转到文本首行行首
    输入Ctr + g 然后连续输入两个小写 g
  • 跳转到文本尾行行首
    输入Ctr + g 然后输入大写 G
  • 跳转到特定行
    输入行号,然后输入 大写 G

总结

文章到此也该结束了,相信看到这里的你应对Vim日常使用,至少上手已经不成问题了。 本文为工具型教程,建议点赞收藏,以后肯定用的着,到时候又找不到了。最后如果你觉得我还不错,也希望你关注我,我会不定时写一些IT方面的文章,每篇都是我亲自上手过得,绝不会去简单copy一些文章误人子弟。

祝愿广大程序员五一快乐。

参考文章:

Vim基本使用方法
Vim Editor Modes Explained

You May Also Like

About the Author: shusheng007

发表评论

邮箱地址不会被公开。