vim

Vim : Vi文本编辑器的进阶版,是Vi IMproved的缩写,表示“改进了的Vi”。Vi非常流行,在大多数基于Unix演进的操作系统中一般是默认安装的,Linux便是其中之一。Vim从名字即可知道比Vi编辑器更加先进

 

安装和启动

  在大部分的Linux发行版中,Vim是默认安装的。但是不保证有个别的Linux发行版没有默认安装Vim,比如:Ubuntu,在Debain一族的Linux发行版安装Vim:

  sudo apt install Vim  ||  sudo apt-get install Vim

  补充:apt和apt-get大致来说很相似,许多命令也是相同的,apt修正了apt-get的一些设计错误,因此apt更好一些

  启动VIm:Vim

 

vimtutor : Vim的教程程序

  输入以下命令即可执行:vimtutor

  vimtutor是vim和tutorial的缩写,tutorial是英语“教程”的意思,因此,vimtutor就是“Vim教程”的意思。 如果你输入vimtutor显示没有此命令,那么你可以安装vim-common这个包。不过一般vimtutor都已经随Linux发行版安装了。
要退出这个Vim教程,只需要输入::q  (q是quit,退出的意思,再按回车,即退出)

 

VIm工作模式

  1、交互模式

    Interactif Mode。也有称之为命令模式(Command mode)的。这是Vim的默认模式,每次我们运行Vim程序的时候,就会进入这个模式。在这个模式中,你不能输入文本(是的,我知道,这有点不符合文本编辑器的“一贯作风”)。因此,别乱按键盘上的字母,你也许会把情况搞得一团糟。交互模式是很强大的,它可以让我们在文本间移动,删除一行文本,复制粘贴文本,跳转到指定行,撤销操作,等等。你在键盘上按键也许会触发特定操作(按下u这个字母键,就是撤销最近的一次操作。因为u是undo的首字母,是英语“撤销”的意思)

  2、插入模式

    Insert Mode。这就是我们熟悉的文本编辑器的“一贯作风”。我们输入文本,文本就被插入到光标所在之处。为了进入这个模式,有几种方法,最常用的的方法是按字母键i(i是insert的首字母,是英语“插入”的意思)。为了退出这种模式,只需要按下Esc键(一般在键盘左上角)。Esc是escape的缩写,是英语“脱离,逃脱”的意思

  3、命令模式  

    Command Mode。也有称之为底线命令模式(Last line mode)的。这个模式下,我们可以运行一些命令,例如“退出”,“保存”,等等。也可以用这个模式来激活一些Vim的配置(例如语法高亮,显示行号,等等)。甚至我们还可以发送一些命令给终端命令行,例如 ls,locate,cp,等等。为了进入这个模式,需要首先处于交互模式(Interactif Mode)下,然后按下冒号键(在一般的键盘上是要按下Shift键+分号键)。输入命令后,再按回车,就会执行此命令。执行命令后,就又回到交互模式了

 

使用

 基本操作(移动,写入,保存,等等)

  用Vim来打开一个文件,只需要在vim后面再加文件名,如:vim filename,如果文件不存在,那么文件将会被创建

  i :插入文本
    我们从一个空白文件开始。首先按下键盘上的字母键i(小写的i),这样我们就从初始的交互模式进入了插入模式,就可以开始键入文本了。
    按Esc键,回到交互模式

  移动 :h, j, k, l (上下左右移动)

    在Vim的交互模式下,我们可以在文本中移动光标。我们可以用四个键来实现上,下,左,右的移动

    除了这四个键,我们也可以用键盘上的四个方向键来移动,效果是一样的。而且,在插入模式下,要上下左右移动也只能用方向键了

  0和$ :移动到行首和行末

    在交互模式下:

      为了将光标定位到一行的开始位置,我们只需要按下数字键0即可。当然了,键盘上的“Home”键也有相同效果。

      为了将光标定位到一行的末尾,我们只需要按下美元符号键$即可。当然了,键盘上的“End”键也有相同效果。

  w :一个单词一个单词地移动

    在交互模式下,按字母键w(w是word的首字母,是英语“单词”的意思),我们可以一个单词一个单词地移动,有时候比一个字符一个字符地移动可高效多了

  :w :保存文件
    按下冒号键(:),以进入命令模式,然后按下w(w是write的首字母,是英语“写入”的意思)键.

  :q :退出

    需要先按下冒号键,以进入命令模式,再按下q键,再回车。
    Vim会阻止我们在没保存更改的情况下退出。当然,你也可以强制Vim退出,而不保存刚做的修改,只需要在 :q 后面加一个感叹号,表示“强制执行”,:q!

  :wq :保存然后退出

    这是两个命令的组合:w和q。w用于保存刚做的修改,q用于退出

 

标准操作(复制,粘贴,撤销,等等)
  x :删除字符

    在交互模式下,将光标定位到一个你想删除的字符上,按下字母键x(小写的x),你会发现这个字符被删除了。效果和在插入模式下用BackSpace键(退格键)来删除字符一样。

    我们也可以一次性删除多个字符,只需要在按x键之前输入数字即可。

    比如我要删除从光标处字符开始到后面的4个字符,我可以先按下键盘上的数字键4,然后再按x,你会发现,4个字符被删除了。

    如果输入12,再按下x,那么从光标处开始往后的12个字符都会被删除  

  d :删除单词,行,等等

    我们用字母键d(d是delete的首字母,是英语“删除”的意思)来删除单词或者行。其实被删除的内容会被暂存在内存里,就好像“剪切”。被剪切的内容之后是可以被粘贴的,我们之后会学到,要使用字母键p

    ①:dd删除行

      连按两次d来删除光标所在的那一行。

      dd也可以和数字配合,以实现一次性删除多行。例如,先输入2,再按下dd,就会删除从光标所在行开始的2行

    ②:删除一个单词

      将光标置于一个单词的首字母处,然后按下dw(delete word的缩写,是英语“删除单词”的意思),整个单词就会被删除了。如果光标置于单词中的某个字符上,那么只会删除从当前字符开始到下一个空格前的所有字符。当然,你也可以一次性删除3个单词,只需要依次按下 3dw。而且如果你把数字放在d和w之间也是可以的,例如 d3w

    ③:d0和d$ :删除行首或行末

      按下d键,再加0键,就会删除从光标处到行首的所有字符

      按下d键,再加$键,就会删除从光标处到行末的所有字符

  yy :复制行到内存中

    按两次y会把光标所在行复制到内存中。和dd类似,dd用于“剪切”光标所在行到内存中,而yy是“复制”

    yw则会复制一个单词,y$则是复制从光标所在处到行末的所有字符,y0是复制从光标所在处到行首的所有字符。

  p :粘贴

    如果你之前用dd来剪切过一行,或者用yy来复制过一行,或者是同类操作(比如y$, dw, y0, d0,等等),那么可以使用p键来粘贴这些内容。p是英语paste的首字母,表示“粘贴”

    注意:用p来粘贴时,内容会被粘贴到光标之后。
      如果你用yy复制了一行,再用p来粘贴,那么这一行会被粘贴到光标所在行的下一行处

    我们也可以将同样的内容粘贴多次,只需要在p前面加上次数。例如 7p,表示粘贴7次

  r :替换一个字符

    如果你输入文本时不小心输错了一个字符,你可以用替换来解决

    在交互模式下,将光标置于想要替换的字符上,按下r(r是replace的首字母,是英语“替换”的意思)键,接着输入你要替换的字符。例如,rs表示替换当前字符为s

    如果你用大写的R,那么就是切换到替换模式了。左下角会显示“-- REPLACE --” (replace就是英语“替换”的意思)。

    在替换模式下,你可以一次性替换多个字符。要退出替换模式很简单,按Esc键即可

  u :撤销操作

    如果要撤销最近的修改,只需要按下u(u是undo的首字母,是英语“撤销”的意思)键。同样地,如果想要撤销最近四次修改,可以按下4,再按下u

    为了取消撤销,也就是重做之前的修改,只需要按下Ctrl键+r键(r是redo的首字母,是英语“重做”的意思)

  g :跳转到指定行

    要跳转到最后一行,按下G(大写的G,Shift+g)

    要跳转到第一行,按下gg(两次g键)

    跳转到指定行:行号+G 或 行号+gg

 

 高级操作(分屏,合并,查找,等等)

 / :查找

    如果你按下 /(斜杠),那么就进入了查找模式

    / 后输入你要查找的字符串,然后按下回车。光标就会转到文件中下一个查找到的匹配处。

    如果字符串不存在,那么会显示“Pattern not found”,表示“没有找到匹配项”。

    如果要查找下一个匹配项,只需要按n键。如果要反向查找,需要按N(大写的n,Shift+n)。

    用斜杠来进行的查找是从当前光标处开始。如果你要从文件最开始处查找,那么将斜杠(/)替换为问号(?)即可,其他功能是一样的。

  :s 查找并替换

    :s/旧字符串/新字符串 :替换光标所在行的第一个匹配的字符串

    :s/旧字符串/新字符串/g :替换光标所在行的所有匹配的字符串

    :#,#s/旧字符串/新字符串/g :替换文件中第#行到第#行的所有匹配的字符串

    :%s/旧字符串/新字符串/g :替换文件中所有匹配的字符串(应该是最常用的吧)

 

 

END.

posted @ 2022-07-26 10:44  杨岂  阅读(477)  评论(0编辑  收藏  举报