Vim使用基础篇

编程入门 行业动态 更新时间:2024-10-21 17:34:32

Vim使用<a href=https://www.elefans.com/category/jswz/34/1770030.html style=基础篇"/>

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。

先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。

目录

看完以后的汇总

1.正常模式(Normal模式)

1.移动光标

2.删除

3.【:】输入符

4.撤销

5.替换

6.重复命令【. ; ,】

7.复制粘贴

8.缩进

2.插入模式 INSERT

3.可视模式 Visual

4.vim内部的文本对象 textobject

5.vimrc设置


看完以后的汇总

1.输入以下字符会在屏幕最下面出现对应的字符,可以输入命令:

【:】

【 / 】

 

2.ctrl+操作

ctrl+g 看行数信息

ctrl+o/i 相当于向前导航 向后导航

ctrl+r 相当于重做(撤销刚刚撤销的)

ctrl+w ctrl+w 切换vim窗口(这里在当用:help 的会用到)

ctrl+v进入面向块的可视模式

number+ctrl+a/数字+ctrl+x 分别对数字进行加number和减number的操作(如果当前光标不在数字上,就是在当前行正向查找到的那个数字再进行加和减的操作,如果找不到不做任何修改)

 

3.善用help

  • 比如输入 【:help w】 ,显示如下图

S代表Shift键,Right代表→键,即按shift→和按小写w是一个作用——向前移动一个单词的意思。

但是exclusive,motion 啥意思?words 和 WORDS啥区别?继续help。

 

  • 输入【:help motion】,如下图

motion指移动光标的那些命令。

motion常常用在operator后面,用来表示operator要操作的字符。后面复杂的用到再看了。

 

  • 输入【:help exclusive】 

出现了两种motion:a character motion 和 linewise motions 应该是面向字符的移动和面向行的移动。

 

  • 输入【:help word】 

w:单词 = 包含字母数字下划线的序列 或者  除了前面这些以外的其他非空白字符组成的序列 

比如 <go!to!school!> 

<,go,!,to,!,school > 分别都是word

 

W:字串 = 非空白字符序列

比如 <go!to!school!> 

<go!to!school!> 就是一个WORD

 

4.记住 operator + motion 的语法

operator有哪些 ——:h operator 查看

 

 


1.正常模式(Normal模式)

任何模式下按ESC就可以进入正常模式,没事就多按几次ESC好了

press <ESC> to make sure that you are in Normal mode

分成几类

1.移动光标

1)基本移动

【motion】:h j k l 左下上右           w  一个词儿           e 这个的词头儿和词尾儿

  更多指令:【数字 + motion】

1)

相当于上下左右箭头的移动

h j k l  左下上右

2)

以word子串为单位 w b e ge

 

PS:

1)以WORD字串为单位  W B E GE

2)word和WORD区别输入【:help word】查看。

3)其实是以WORD为单位移动比较常用

4)也不用记多清楚,这几个字母试就行了

w 正向移动到下一个单词的词头

b 反向移动到当前单词或上一个单词的词头

 

e 正向移动到当前单词或下一个单词的词尾 

常用组合:【ea】——在词尾进入插入模式

 

ge 反向移动到上一个单词的词尾

常用组合:【gea】——在上一个单词的词尾进入 

 

3)

一行的首尾

0移动到行首

^移动到行首,不包括空白字符

$ 移动到行尾

4)

跳转到指定行

 

gg 跳到文件第一行开头

G 跳到文件最后一行

跳到指定行方式:

         数字+G 

         数字+gg

        :数字

 

先通过【ctrl+g】 显示行数等信息

5)

移动屏幕位置

zz,让当前行居屏幕中间显示;

zt,让当前行居屏幕顶部显示;

zb,让当前行居屏幕低部显示;

2)导航移动,匹配移动

1)

向前导航,向后导航

在查找的时候的前一个后一个位置

以及在跳转行数的前一个后一个

不包括 hjkl的移动位置

【ctrl+o】回到较旧的位置

【ctrl+i】去到较新的位置

2)

【%】匹配括号查找

查找对应的另一边的括号

把光标放到( [ { 或者 } ] ),然后按%,就跳转到匹配的括号。
  

3) 搜索移动

1)

正常模式下,输入/或者?,在屏幕下方输入单词进行查找

/ or  ? 。一个正向一个逆向

或者

光标停在要给单词上,按【*】,就相当于输入了/单词

 n or N , 下一个或者前一个
一些附加的设置

【:set hls】设置高亮的查找  highlightsearch

【:set nohls】  设置非高亮

【:set ic】设置忽略大小写 ignore case

【:set noic】设置不忽略大小写

【:set is】设置逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成 includesearch

【:set nois】设置完整搜索模式

/words/c】  仅一次中忽略大小写

2)

f,F,t,T在当前行查找字符,如果没有找到,就什么也不做。

如果要多次查找同个字符,结合【,;】重复命令

f{char}:在当前行正向查找指定字符

F{char}:反向查找

t{char}: 正向移动到下一个char所在之处的前一个字符上。

T{char}:反向移动到上一个char所在之处的后一个字符上。

  

2.删除

【operator】:d删除

更多指令:【operator + 数字+ motion】

【x】

 

光标处删除一个字符

【d】

注意:光标处的字符也删除

dl 相当于 x

dw 从光标开始删除到下一个单词开头(w是 exclusive)
de 从光标开始删除到这一个单词词尾(e是inclusive)
d$ 从光标开始删除到这一行结尾

dd 删除整行 

输入命令【p】把删除的那行粘贴在光标所在的行,在光标所在行的的下面插入此行

db 从光标前面开始删除到词头(:不包括光标所在的字符

ps:删除操作符d的更多组合

1)d与查找字符(t,T,f,F)的结合,比如

dfd ==》从当前光标处,删除到 字符d前的字符。

dt. ==》从当前光标处,删除到直到字符. 前的字符。

f,dt. ==》找到,光标从,开始,删除直到.前的字符。

 

2)d与文本对象的结合:daw dap (文本对象下面会介绍) 

可以用来构造可重复的修改:比如删除用daw(delete a word:operator+motion(motion可以用文本对象)),就可以用.来重复上一个操作,即删除单词。

 

3) dl 和 cl 的区别(operator c 和 operator d)

dl = x 删除当前字符

cl 删除当前字符并进入插入模式

 

 3.【:】输入符

在正常模式下,输入:会在屏幕下面显示:

就可以在最下方输入一些命令了

使用上下箭头前一个命令后一个命令 

按ESC退出

按TAB键补全命令

3.1 文件相关

:w保存   :q退出

【:wq】保存退出

【:q!】不保存退出

【:w FileName】保存到文件但不退出

:r 读取取回 可以是文件内容也可以是外部命令的输出

【:r FileName】读入文件的内容到光标下

【:r !ls】读取外部命令的输出 的内容 插入到光标下

:e 编辑 

:help 帮助-跳到对应的主题上

3.2 【:s】替换命令

【:s/old/new】 替换光标所在那一行的第一个匹配的
【:s/old/new/g】 替换光标所在那一行的所有匹配
【:#,#s/old/new/g】 替换两行之间的所有匹配。如560,590s/thee/the/g
【:%s/old/new/g】 替换整个文件的所有匹配
【:%s/old/new/gc】 询问是否替换,整个文件

3.3 【:!】外部命令

【:!ls】    

【:!pwd】    

【:!rm】 

等等

 

4.撤销

 

u 撤销单次。试下多次按 或者 【数字+u】

 U 撤销整行的修改。
 ctrl+r 撤销刚刚的撤销操作,如果刚刚没有撤销命令,那么这个指令就没有用。

注意:

1)当进入一次插入模式,再退出插入模式,这整个被视为一个撤销单元块,被视为一次修改。

2)为了把撤销单元切得更小块,可以用<esc>o(相当于退出插入再进入插入) 来代替 回车键。这样就是每行是一个撤销单元。

3)当在插入模式,使用上下左右的光标键 其实就是产生了一个撤销块,即相当于退出了后又进入插入模式。

 

5.替换

r & R替换命令

r 单次替换,自动退出为正常模式

 

R 一直替换,会进入替换模式(可以看到屏幕最下方出现了--REPLACE--)

相当于我们键盘上的Insert按键

按esc退出为正常模式

 

6.重复命令【. ; ,】

1)【. 】

重复上一次的修改

比如上一次的操作是比较复杂的daw,删除一个单词。还想继续删除一个单词的操作,就按.就行了。

比如上一次的修改是 x,dd,  按.就是删除当前字符、删除当前行。

比如上一次的修改是在插入模式中的修改——每行末尾加分号【A;ESC】,继续下一行【j.】

 

2)和查找字符命令(fFtT)结合的

【;】

重复查找上次所查找的字符

【,】

反向查找

 

ps:查找words命令(/),用n和N进行上一个查找

【;】和【.】合作例子:先找到一个字符(f 移动光标),进行插入修改操作退出(进入插入模式到退出被视为一次修改) ,然后重复上述过程就直接用【;.】即可——让移动动作 和  修改动作 都可以重复。

 

如果用【/】搜索单词的操作的话,用【n/N】来重复移动动作。

【.范式】:

1.

用一次按键移动,一次按键执行

比如上述例子中的【j.】【;.】【n.】

2.

尽量构造可以重复的操作

删除一个单词用 daw  而不是其他db dw de之类的

能用.来重复的时候,就不需要数次数了 比如【dw.】= 【d2w】

 

 

7.复制粘贴

复制y

yw,复制一个单词

yy,拷贝当前行;相当于 Y 

nyy,拷贝当前后开始的n行

y^,复制到行首,不包括当前位置;

y$,复制到行尾,包括当前位置;

yG,复制到文档尾;ygg,复制到文档头;

【yyp】复制粘贴

p:在光标后进行粘贴

(P:在当前光标前粘贴)

dd删除后,可以用p进行粘贴——ddp即实现了当前行与下一行的交换;

x删除后,也可以用p进行粘贴——xp即实现了当前字符与其后的一个字符的交换;

d相关的命令删除后都可以用p进行粘贴

 

 

8.缩进

缩进类命令

1)单行缩进

<<

>>

 

2)多行缩进

n<<

n>>

当前行开始的n行进行缩进

 

2)从当前行缩进到末尾

>G

 


2.插入模式 INSERT

1.【iao直接进入插入模式】i 在光标的前面进入插入模式
 I 到行首进入插入模式
 

a 在光标的后面进入插入模式

 

A 到行尾进入插入模式

相当于【$a】,能用1个的就不要用2个了。

 

o 在光标的下方打开新的一行并进入插入模式

相当于【A+回车】

 

O在光标的上方打开新的一行并进入插入模式

相当于【ko】

2.【c删除文本(text)以后再进入插入模式】

更多指令:【c + 数字+ motion】

ps:operator c 和 operator d都是删除,区别是进不进入INSERT模式

ce 删除光标到词尾 并且进入插入模式。试下 c2e 
 cw 删除光标到下一个单词的开头 并且进入插入模式。试下c3w
 c$ 删除光标到行尾 并且进入插入模式。试下c4$

2.【s删除字符(character)以后再进入插入模式】

s = cl
 

 
  

3.可视模式 Visual

在正常模式下按【v】,屏幕最下方会显示 --Visual字样

 
按v进入面向字符的可视模式先:使用移动操作的一些motion(h j k l w b e 啊这些),就会看见高亮选中一段字符
 

再:可以进行相当于在正常模式下的命令操作

比如 【d】就是删除了选中的字符

比如 【:w FileName】 就是存到FileName中

比如 【y】就是复制了选中的字符,然后再【p】就是复制了

比如 【r-】就把选中的所有字符全部替换成了-

 

按完操作以后就自动退出到正常模式了。

按V进入面向行的可视模式VG:选中光标所在行到最后一行
  
ctrl-v进入面向块的可视模式 

4.vim内部的文本对象 textobject

1.用于操作分隔符的文本对象

分隔符有:

<>(xml的tag) <>

()    []  {}  <> 

""   ''    ``   

分隔符就是相当于配对的符号,用他们来作为开始和结束的标志

用于操作分隔符的文本对象

 

it一对XML标签的内部<xml>tags</xml>
at一对XML标签
 

i代表inside,里面

a代表around,围着的

同理 a) i),a] i],a} i},a> i> 
同理a'' i'',a' i', a` i` 

 

2.用于操作文本块的文本对象

 

d{motion}命令 和 aw as ap配合起来使用比较好,

c{motion}命令 和 iw 以类似的文本对象配合使用较好。

aw

当前单词以及后面的空格,如果有有的话

iw仅仅删除当前单词,不后面的包括空格
is as句子
ip ap段落

 

3.用文本对象执行命令:d,c,y operator

{motion} 中的都可以用 文本对象 来代替

c + {motion}删除再进入插入模式

ci''#<esc>——修改双引号里面的内容为#

citclick here<esc>——修改标签里面的内容为click here

d + {motion}删除

daw 删除一个单词

y + {motion}复制yit拷贝标签内的文件

 5.vimrc设置

vimrc 在哪里

输入 :version 最后面几行会出现

如不知道 $VIM 代表什么 

输入:echo $VIM

更多推荐

Vim使用基础篇

本文发布于:2024-02-26 17:53:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1703371.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础   Vim

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!