vim 基本使用

目录

提要

普通模式(Normal mode)

常见操作(自己实操):

h/j/k/l:光标(cursor)左/下/上/右移动。

认识各种   操作符(operation)、移动指令(motion)和(即时)命令

即时命令1  p/x/r

即时命令2  u/ctrl + r  (撤销、撤销之撤销)

即时命令3  ctrl f / b   ctrl u / d  (翻页)

插入模式(Insert mode)

末行模式(Last line mode)

常用指令(自己实操)

替换模式(Replace mode)

可视模式(Visual mode)

应用:一键注释代码

总结


提要

本文只关注于  vim  的基本使用,在以较低成本学习的前提下能够长时间自如运用  vim  。旨在帮助人们能更好地进行文档的各种基本操作,以及更好地理解各种操作并进行合理搭配,并不会涉及其他额外的知识。但是为了便于我们理解和记忆各种操作的标识字母,我会进行英文注解。

 读完本文:

你将学到 不 会学到

vim基本概念及基本操作 &  各模式下的基本命令集

  • 普通模式、插入模式、替换模式、命令行模式(末行模式)、可视模式。
  • 打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。
  • 一键注释代码。
  • 一些简单的英文。
  • vim的配置以及各种插件。
  • vim各种衍生知识包括vim registers、vim macro、etc.

!!!切记本文的操作尽量边看边练习,只是记忆很难达成我们熟练使用  vim  的目的。

NOTE:

  1. 本文有   <digit>   标识的地方请你键入   任意数字   来进行替代
  2. 本文有   <letter>   标识的地方请你键入   任意字母   来进行替代
  3. 本文有   <pattern>   标识的地方请你键入  任意字符串   来进行替代

普通模式(Normal mode)

  • 进入方式:启动 Vim 后默认进入,或通过 Esc 键进入。
  • 作用
  1. 进入其他模式必须从普通模式进入键入  Esc  进入普通模式。
  2. 进行导航和文本操作,比如移动光标、删除、复制、粘贴等

常见操作(自己实操):

h/j/k/l:光标(cursor)左/下/上/右移动。

对于  hjkl  作为左下上右的设计,不仅是历史的遗留问题,这样的设计也提高了编辑的效率。在vimtutor上 原话是这样的:

(不想看英文的可以直接看下文翻译)

line 30: The h key is at the left and moves left.
line 31: The l key is at the right and moves right.
line 32: The j key looks like a down arrow.

翻译过来就是,在   hjkl   中     居最左,   最右,那么左和右就是他们俩,    长得像下箭头就代表下。 那么剩下的    k    自然就是    向上(up) 了 

认识各种   操作符(operation)、移动指令(motion)和(即时)命令

操作符:删除--d(delete),复制--y(yank--拉取),更改--c(change)

移动指令(即下文所谓的 motion含义
w(word)跳转下一个单词的开头
e(end)跳转当前单词的末尾
$当前行(line)的尾
^到当前句(sentence)的头(该行第一个非空字符)
0(zero)不是大写o到 当前行 的首
gg good game(doge)跳转 文件 开头
G跳转 文件 末尾
<digit>G跳转到  digit  行
f <letter>or<digit>跳转到当前行下一个键入的字符
/<pattern>
?<pattern>

                               向下查找输入的字符串并跳转


                               向上查找输入的字符串并跳转

NOTE:

  1. 还有很多   motion   比如  vim 会记录你的  motion  并允许你使用   ctrl + o 回到上一次跳转的地方或者使用   ctrl + i   回到新跳转的地方,自己试。
  2. 不知道光标在多少行 可以 按    shift + ; 也就是键入   :   进入末行模式,输入set nu 将会显示行号,或者在普通模式下 按下ctrl + g会显示当前行号。
  3. 查找(search)的时候 按 n 跳转到下一个匹配(match)项,N  跳转到上一个匹配项。

 公式 :   operation  [<digit>]  motion   (未输入digit则默认为1

  1. 比如 d2w 删除接下来的两个word
  2. d$  从光标(cursor)处删除一直到行末(不会删除回车换行键)

学习了以上这些,就可以自行进行排列组合形成无数种操作了。但是还有一些操作需要了解

公式  :      [<digit>]  +  dd \ yy \ cc

dd  删除整行,yy  复制整行, cc  删除整行并置为   insert   模式

3dd 删除3行    5yy  复制5行   等等等等

即时命令1  p/x/r

简单点说,命令不能像操作符operation一样和移动指令motion组成一个公式使用,脱离了这些框架,为我们提供简单灵活的粘贴,删除,替换操作

p:(paste、put)直接粘贴刚刚d(删除)的或者y(复制)的到光标处

x:  删除光标位置处的单个字符, x  键作为删除不是直接从英文过来的,而是历史遗留下来的,x也像叉号  ×   ,我是这么记的。

r:    (replace)  敲  r  了再输入一个字符将光标处的字符替换为输入的字符

即时命令2  u/ctrl + r  (撤销、撤销之撤销)

u :(undo) 按下后回退到上一次操作前的文档

ctrl + r:  undo undo's  意即(否定之否定)撤销之撤销,只可用来撤销已经撤销的操作

实际上还有个   U  (shift + u) 用来撤销光标所在行所有的操作,但是我认为没必要记。

即时命令3  ctrl f / b   ctrl u / d  (翻页)

不卖关子了:

<digit>ctrl  f--forward \ b--backward

不跟数字默认一页,前面跟数字就是翻几页

向前、向后翻页

<digit>ctrl  u--up  \  d--down

不跟数字默认翻半页,跟数字就是翻几行

向前、向后翻页

插入模式(Insert mode)

  • 进入方式:在普通模式下键入   i     /    a    /    o     以及他们的大写   进入

i:在光标前进入插入模式。

I:移动光标到当前行的第一个非空字符前插入文本。

a:在光标后进入插入模式。

A:移动光标到行末(不是句末)后进入插入模式

o:在当前行下方新建一行并进入插入模式。

O:在当前行上方新建一行进入插入模式


末行模式(Last line mode)

顾名思义该模式就是固定使用者的操作空间在末行。

  • 进入方式:(在普通模式下)键入    shift +  ;    也就是输入     :    进入末行模式也叫(命令行模式---- Command mode)

常用指令(自己实操)

以下命令都需要 按回车  (hit Enter)才会生效

:set nu(number)

:set ic (ignore case)

显示行号

忽略大小写  比如查找的时候

:<digit>跳转行号
:q!    (quit !)强制退出
:wq  (write quit)保存退出
:w保存

指令集

1 :s/old/new   (s--substitute)

2 :s/old/new/g    (g--global)

3 :%s/old/new/

4 :%s/old/new/g

5 :%s/old/new/gc  (c--confirm)
6 :<digit>,<digit> 紧贴上面的替换语句( 不用加 %)

匹配old 然后替换成new

1 替换当前行的第一个匹配项

2 替换当前行的所有匹配项

3 替换整个文档的第一个匹配项

4 替换整个文档的所有匹配项

5 替换整个文档的所有匹配项但是需要用户进行输入确认

6 范围替换

:!  +  external command执行外部命令
:w filename

另存为文件到cwd(当前文件夹)下的filename文件中

(没有该文件则新建)

:r filename或者其他

(r--retrieve--收回)

将值拷贝过来,如果输入一个文件名那么拷

贝文件所有内容到vim里面,还可以输入   !ls   这样

的外部指令,可以将指令的输出值拷贝到vim里面来

:nohlsearch (no highlight search)        让查找的结果不会高亮

替换模式(Replace mode)

输入   R   进入替换模式,再输入字符串,相当于一连串的   r   命令,可以键入 backspace  进行回退,把刚刚替换的回退掉,使得光标处变成未替换之前的样子


可视模式(Visual mode)

按   v  \  V  \  ctrl + v 进入  可视模式   \   行可视模式   \   块可视模式

区别是 :   可以进行一个段落的自由选择   \   只能是整行选择   \   只能是矩形式地选择

相当于word文档里用鼠标框中的一个段落,选择之后,我们可以delete也可以yank也可以change所选择的块

下面讲一下应用:一般我们用   块可视模式   实现对多行的同一列进行相同处理(比如代码的一键注释)

应用:一键注释代码

  1. ctrl v 进入块可视模式 
  2. 上下左右或者使用motion (比如<digit>G)选择需要注释的行
  3. 选择好后按shift + i 也就是 I  进入 insert  模式
  4. 输入   #   或者  //   (具体根据语言来)然后按 Esc 退出块可视模式稍等一秒就好了

总结

vim下的基本操作也差不多了,学到这里已经能够正常使用了。vim 模式不止这些,而且还有许多命令前人之述备,这里也不便于过多赘述,只是在网络这一角旮旯发布  vim   的使用,以期能有所造化吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值