VIM快捷按键学习笔记

11 篇文章 1 订阅
9 篇文章 0 订阅
这篇博客介绍了VIM编辑器的搜索、导航、多标签页、缓冲区管理和寄存器等快捷操作,包括向前/向后搜索、跳转历史位置、标签页的使用、缓冲区管理以及寄存器的操作,帮助提升VIM编辑器的使用效率。
摘要由CSDN通过智能技术生成

Shift + k

,qq退出

Ctrl + p

Ctrl + n

触发关键词动补

Ctrl + d

命令行  :e

按 CTRL-D ,VIM会显示以“e”开头清单

  

    

键入 / ,接上要向前搜索的短语。

键入  ?  接上要向后搜索的短语

搜索后,按n 以相同的方向搜索下一事件,按N以相反的方向搜索。

CTRL-O 使你返回到以前的位置,CTRL-I 回到以后的位置 。

:#,#s/old/new/g

##两行间,以new 替换所有的old

:s/old/new

在一行中以new替换第一old

:s/old/new/g

在一行中以new替换所有的old

 :%s/old/new/g

更改全文件中的所有事件

 :%s/old/new/gc

更改全文件中的所有事件,并给出替换与否的提示

   

v  motion  :w FILENAME  saves the Visually selected lines in file   FILENAME

v 并移动 光标,按  :字符,屏幕底会显示  :'<,'>,按 w TEST ,其中 TEST 是一个不存在 的文件。(确认按<enter>前看到了:'<,'>w TEST),vim 会把选定的行写入文件TEST

:r FILENAME  retrieves disk file FILENAME and puts it below the cursor position.

:r FILENAME 恢复磁盘文件FILENAME到光标下

:!ls                              -  显示目录清单

:!rm FILENAME    -  移除 FILENAME文件

:w FILENAME  将当前的vim 文件以FILENAME 文件名写进磁盘

control + [           这两个按键取代 <ESC>

i

是在光标所在的字符之前插入需要录入的文本。

I

是在光标所在行的行首插入需要录入的文本。

a

是在光标所在的字符之后插入需要录入的文本。

A

是在光标所在行的行尾插入需要录入的文本。

o

是光标所在行的下一行行首插入需要录入的文本。

O

是光标所在行的上一行行首插入需要录入的文本。

s

删除光标所在处的字符然后插入需要录入的文本。

S

删除光标所在行,在当前行的行首开始插入需要录入的文本。

i 在光标之前,进入插入模式

I 在本行开头,进入插入模式

a 在光标之后,进入插入模式

A 在本行结尾,进入插入模式

o 在本行之后新增一行,并进入插入模式

O 在本行之前新增一行,并进入插入模式

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

S 删除当前行中的所有文本,并进入插入模

Tab 常见的几个命令如下:

:tabnew  web

使用 :tabnew 创建一个名字叫 web 的 tab ,当然名字也可以没有,这样会创建一个没有名字的 tab

:tabedit 文件名

在新标签页中打开指定的文件

:tab split

保留当前标签页,并在新标签页中打开当前缓冲区中的文件

:tab ball

如果打开了多个缓冲区,该命令将为每一个打开的缓冲区,分别新建单独的标签页

:tabfind

搜索并在新标签页中打开文件

比如想打开当前目录下的img.txt文件,那么就可以使用:tabfind img.*命令。请注意,此命令只能打开一个文件,如果搜索出多个匹配文件,将提示“E77: 文件名过多”,

需要给出更精确的搜索条件以打开文件。此命令搜索文件的范围,是由path选项指定的。例如以下命令将指定搜索包含当前文件的目录(.),当前目录(两个逗号之间的空格), 以及当前目录下的所有子目录(**)::setpath=.,,**

:tabclose

关闭当前标签页

:tabonly

保留当前标签页,而关闭其它所有的标签页

:tabc

关闭当前的 tab

:tabn

切换到下一个 tab

:tabp

切换到上一个 tab

:tabs

查看一共有几个 tab,显示已打开标签页的列表,并用“>”标识出当前页面,用“+”标识出已更改的页面

gt

移动到下一个标签页

gT

移动到上一个标签页(如果已经到达最后面或最前面的标签页,将会自动转向循环)

1gt

这是上一个命令的拓展,按下数字键(1,2,3,4……)和 gt ,将切换到相应顺序的 tab, tab 的序号默认从 1 开始,上面的命令将会切换到第一个 tab 。

:tabfirst或:tabr

移动到第一个标签页

:tablast

移动到最后一个标签页

Vim 7.0开始引入了多标签页(Tabs)概念,用于同时编辑多个文件,每一个标签页也可以包含多个缓冲区或窗口。

标签页的特殊之处在于:

通常作用于所有打开的缓冲区和窗口的命令(比如 :bufdo, :windo, :all, and :ball等)只影响当前标签页中的缓冲区和窗口

Vim初始化时传入-p参数后跟多个文件,此时每个文件对应一个tab。

例如打开三个文件,每个文件对应一个tab:

vim -p file1 file2 file3

Tab的标签默认显示当前缓冲区的文件名。

如果在同一标签页中打开了多个缓冲区,那么标签也会显示打开缓冲区的总共数目

例如vim file1 file2 file3,参数中的所有文件都会被载入缓冲区

"+" 表示已经修改过的页面。而"2+" 则表示有3个窗口,其中一个已经更改。

set tabpagemax

Vim默认最多只能打开10个标签页。可以用set tabpagemax=15改变这个限制。

:tabm

按照指定的次序排列标签页

注意,标签页次序是从0开始计数的。

比如命令:tabm 1将把当前标签页移动到第2的位置。

如果没有为:tabm命令指定参数,那么当前标签页将会被移动到最后

set showtabline

默认情况下,只有用户新建了标签页才会在窗口上方显示标签栏,这是由选项set showtabline=1决定的。

如果我们希望总是显示标签栏,那么可以用set showtabline=2命令来设置。

如果我们希望完全不显示标签栏,那么可以使用set showtabline=0来设置

:tabdo

多标签页命令

同时在多个标签页中执行命令

比如打开了多个标签页,需要把这些文件中的“food”都替换成“drink”,

那么就可以使用:tabdo %s/food/drink/g命令,一次完成对所有文件的替换操作,而不用针对每个文件重复操作。

通过:help tab-page-intro命令,可以获得关于标签页使用的更多信息。我们甚至可以使用:tab help tabpage命令,在新的标签页查看帮助信息。

 

在vim中,缓冲区(Buffer)是一块内存区域,用于存储着正在编辑的文件。 编辑完成之后,在保存缓冲区并退出时,内容也随之被写回原始文件。

操作缓冲区Buffer 的常用命令:

:ls 

列出所有的缓冲区/ VIM 打开的所有文件

:bn

切换下一个缓冲区,显示下一个文件的内容

:bp

切换上一个缓冲区,显示上一个文件的内容

:b number

这里的 number 是缓冲区的一个数字编号,当 :ls 显示缓冲区的时候都会显示出一个缓冲区的编号:b

:b fileName

fileName 是具体文件名称,也可以是正则表达式,也可以是文件名中的个别字母,一旦匹配就会加载该缓冲区 / 显示该文件到窗口中

注意:fileName必须与缓冲区中的某个文件对应

缓冲区类型及其标志(:ls或者:ls!命令查看)

(1) 最前面的每行1,2,3,4表示缓冲区的编号;

(2) u,#,a,%,-表示缓冲区的属性,具体的含义如下:

-        

Readonly buffer, 禁用了modifiable,只读缓冲区

=        

Readonly buffer, 只读缓冲区

a        

Active buffer, 活动缓冲区, 当前显示在屏幕上

h        

Hidden buffer, 隐藏缓冲区, 已经载入但没有显示

+        

Modified buffer, 已经更改的缓冲区

X        

Error buffer, 读入时报错的缓冲区

%        

Current buffer, 当前缓冲区

#        

Alternate buffer, 交换缓冲区

u        

Unlisted buffer, 只有在列表命令中使用!修饰符才能显示的缓冲区

其中u表示这个缓冲区是vim软件(及其插件)本身打开的缓冲区,而不是用户为了编辑某个文件打开的缓冲区。特别的,如果用户只想查看自己打开的缓冲区,直接用":ls"命令即可;如果想查看当前所有缓冲区,需要使用":ls!"命令。

列出当前所有缓冲区

:ls

:ls!

:files

:buffers

到修改过的缓冲区

:bmodified

添加一个缓冲区

:badd file_path

新增一个缓冲区,指明为这个缓冲区打开窗口时,光标所处的位置

:badd +linenum filename

分屏显示所有缓冲区

:ball

通过buffer编号或者buffer对应的file_path选择某个缓冲区,并在当前窗口覆盖显示选定的buffer

:b number

:b file_path --> 按tab键可以联想并补全file_path

通过buffer编号或者buffer对应的file_path选择某个缓冲区,并拆分当前窗口显示选定的buffer

:sb number

 :sb filename --> 按tab键可以联想并补全file_path

通过:bn / :bp / :blast / : bfirst切换缓冲区(所有缓冲区循环滚动)

:bn(跳转到下一个buffer缓冲区)

:bp(跳转到前一个buffer缓冲区)

:blast(最后一个缓冲区)

:bfirst(第一个缓冲区)

通过:wn / :wp存盘文件、并跳转

:wn(存盘当前文件、并跳转到下一个buffer缓冲区)

:wp(存盘当前文件、并跳转到前一个buffer缓冲区)

删除缓冲区 --> 为这个缓冲区打开的窗口会关闭,并从缓冲区列表中移除文件名

:bdelete file_path

删除单个缓冲区

:bdelete number

删除指定范围的缓冲区

:start,end bdelete

卸载缓冲区 --> 为这个缓冲区打开的窗口会关闭,但是这个文件名仍然会存在于缓冲区列表中

:bunload file_path

卸载单个缓冲区

:bunload number

卸载指定范围的缓冲区

:start,end bunload

可以使用:help buffers命令,查看关于缓冲区的帮助信息

如何使用 mark ?

如何使用 mark ?

m 是创建标记的关键字

按下键盘上的 m , 紧跟着在按下键盘上的(a-zA-Z)当中的任何一个字母,这样一个标记 (mark)例如 ma, mA 这样一个名字叫做 a 或者 A 的标记就建立起来了

ma

意思在当前文件的光标所在的行建立了一个标记,以后我们可以快速定位到这个位置。

如何激活标记?

使用 ‘(单引号) 或者 ` (常规键盘靠近数字键 1 左边的按键,我这里就做撇号) ,紧接着按下当初标记的那个字母就会跳到当初标记的那个位置。

例如 :`a 和 ‘a

‘a 和 `a有什么区别呢?

‘a (也就是单引号+a) 是跳转到当初标记的行首

`a (也就是撇号+a) 实跳转到当初标记的时候光标所在的位置

‘ 和 ` 的 区别总结

‘(单引号)通常用来跳转到标记的文本的行首

’ (撇号) 通常用来跳转到标记的光标的位置

ma 和 mA有什么区别?

如果要是在文件之间跳转要使用大写的标记才可以,例如现在在当前文件的某处打了一个标记 mA , 离开该文件切换到了另一个文件,此时使用 ‘A 就可以返回之前文件打标记的地方了。

结论:小写字母通常用来单个文件坐标记,大写字母通常是用来文件间坐标记。

:marks

列出所有的标记

:delmarks  a

删除 a 标记 ,也可以一次删除多个标记,例如, :delmarks a b c d 这样就删除了 a , b , c , d 四个标记

:delmarks!

删除所有的标记(删除所有小写字母的标记)(大些字母的标记除外)

寄存器(register)

vim 如何定义一个有名字的寄存器?

vim 默认使用的是无名寄存器,

vim 通常使用 “(双引号)加上一个 a-z 的字母来给定义一个有名字的寄存器。

例如如下:

“ayy 表示的是复制当前行内容到 a 寄存器当中

“ap 表示的是从 a 寄存器当中取出内容

:reg

该命令会列出所有的寄存器

:reg a

会查看 a 寄存器里寄存的内容

“ap

使用 p 黏贴命令就可以从指定的寄存器中取出内容了,该例就是从 a 寄存器中取出内容。

:5put a

将寄存器中的内容粘贴到第五行的后面

:5put! a

将寄存器中的内容粘贴在第五行的前面

"xp

使用p命令,将x寄存中的文本粘贴到光标之后

"xP

将x寄存中的文本粘贴到光标之前

直接使用p或P命令,而没有指明特定寄存器,那么将粘贴未命名寄存器中的内容

".P

粘贴上次插入的文本

"*p

在Normal mode下,粘贴系统剪切板中的内容

 "* 是选中的内容register,"+是系统剪贴板寄存器

无名寄存器是怎么定义的?

“” 两个双引号就是一个无名寄存器,通常我们复制黏贴的时候都会自动启用这个寄存器

:help reg

查看一下寄存器的详细使用方法

寄存器可以分为以下十种类型:

分屏操作

Ctrl + w s

按住组合键 Ctrl + w ,然后在按下 s

水平切分当前窗口,命令将会上下分割当前打开的文件。

:sp file

按住冒号:,紧接着输入 sp ,在键入文件名

命令将会上下分割当前文件和新打开的 file

Ctrl +w v

按住组合键 Ctrl + w ,然后在按下 v

垂直切分当前窗口,命令将会左右分割当前的文件

:vsp file

按住冒号 :,紧接着输入 vsp ,在键入文件名称

命令将会左右分割当前打开的文件和新打开的文件 file

:sp

可以水平分割当前窗格(上下分割)

:vs

可以垂直分割当前窗格(左右分割)

Ctrl + w h

切换左右分屏的光标 :  将当前光标定位到左边的屏幕

Ctrl + w l

切换左右分屏的光标 : 将当前的光标定位到右边的屏幕

Ctrl + w H

移动左右分屏  : 将当前的分屏移动到左边

Ctrl + w L

移动左右分屏 :  将当前的分屏移动到右边

Ctrl + w j

切换上下分屏的光标 :将当前的光标移动到下面的分屏

Ctrl + w k

切换上下分屏的光标 :将当前光标移动到上面的分屏

Ctrl + w J

移动上下分屏:将当前的分屏移动到下面的分屏

Ctrl + w K

移动上下分屏:将当前的分屏移动到上面的分屏

Ctrl + w c

命令是关闭当前的分屏

Ctrl + w o

保留活动窗口,关闭其它窗口

Ctrl + w q

这个命令也是关闭当前的分屏,如果是最后一个分屏将会退出 VIM

C-w, C-w

切换到下一窗格

Ctrl + w w

切换到下一窗格

左右分屏如下操作:

vim -On file1 file2 ... filen

这里的 n ( n 是要打开的具体文件的数目:1,2,3 ...)是代表有几个文件需要分屏,从左至右依次显示 n 个文件。v

上下分屏如下操作:

vim -on file1 file2 ... filen

这个命令跟上一个命令不同的是其中的参数 -on( n 是要打开的具体文件的数目:1,2,3 ...) 中的 o 是小写,这样将会上下依次显示 n 个文件

:w

保存当前对文件的修改,但是不退出文

:w!

强制保存但是不退出文件

:w file

保存当前的文件修改到 file 文件当中

:q!

退出文件,对文件的修改不做保存

:qa!

退出所有的文件,对所有的文件修改都不做保存

:wq

退出文件并保存对文件的修改

:x

退出文件并保存对文件的修改

:e file

打开另一个文件

:e!

放弃对文件的所有修改,恢复文件到上次保存的位置

:E 

:Ex

:Explorer

在 Vim 中打开资源管理器/目录树,光标选中后回车打开对应文件(提示:- 进入上级目录)

打开文件管理器,并显示活动缓冲区所在的目录

使用 :Explore 命令或缩写 :Ex 命令(注意E大写),将在当前窗口中打开文件浏览器

:edit {path}

打开文件管理器窗口,只是在执行此命令时要以目录名(而不是文件名)作为 {path} 参数

例如:执行 :edit . 或(:e.)命令,就会在文件管理器里打开工程的根目录

<C-^>

调出文件管理器后,切换回之前正在编辑的文件,可以使用<C-^> 命令

<C-g>

<C-g> 命令用于显示当前文件的文件名及状态

 

使用 :Sexplore 命令或缩写 :Se 命令,在上边水平拆分窗口打开文件浏览器

使用 :Hexplore 命令或缩写 :He 命令,在下边水平拆分窗口打开文件浏览器,在上边水平拆分窗口打开文件夹浏览器也可以用He!命令。

使用 :Vexplore 命令或缩写 :Ve 命令,在左边垂直拆分窗口打开文件浏览器,如果右边垂直拆分窗口打开文件浏览器可以用 :Ve!命令。

使用 :Texplorer 命令或缩写 :Te 命令,在新的tab标签页里打开文件浏览器

默认方式打开文件浏览器浏览的是当前文件所处的目录。

也可以在启动Netwr时,指定浏览特定的文件夹,如 :Se C:\Temp 命令。注意直接指定C盘就不行,只能是指定盘符下的文件夹

:Rex[plore] 

返回资源管理器

:bd

:bdelete

:bw

:bwipe

Vim没有将netrw窗口列为缓冲区,而是像缓冲区一样关闭它,并返回到以前的缓冲区/文件。

:saveas file

另存为 file

文件浏览器netrw里的一些常用快捷键及命令

I      显示/隐藏 文件浏览器提示

F1      在netrw文件浏览器里按F1会打开netrw的帮助信息

Enter      在当前窗口打开该文件/目录

t      在新tab标签页中,打开文件/目录

v      在左边垂直拆分窗口,打开文件/目录

o      在上边水平拆分窗口,打开文件/目录

p      预览文件

x      使用关联程序打开文件,用于快速打开非文本型文件,如 word、图片

-      浏览上一级目录

i      在瘦、长、宽和树形方式切换,来展示文件列表

d      新建目录

D      删除的文件/目录

%      新建文件

s      依次切换选择排序方式:按名字,时间或文件大小

S      自定义排序

r      反向排序列表

R      重命名指定的文件/目录

:bn 和 :bp

当打开多个文件时 :bn 和 :bp 进行上一个文件或者下一个文件的切换

:set nu

该命令会显示行号

:set nonu

该命令会取消行号

:n

定位到 n 行

:set ic

编辑器将不会区分大小写

:set noic

该命令用来区分大小写的查询

:n1,n2d

VIM 删除多行文本,n1 和 n2 指的是起始行号和结束行号,d 是删除关键字

VIM 处理文本的替换

:{作用范围}s/{目标}/{替换}/{替换的标志}

g 是替换标志之一,表示全局global替换(即替换目标的所有出现)

i 表示大小写不敏感查找,I 表示大小写敏感

c 表示需要确认

:s/zempty/handsome/g

将会把当前光标所在行的 zempty 替换成 handsome

:s/zempty/handsome

只替换从光标位置开始,目标的第一次出现

:'<,'>s/zempty/handsome/g

选区,在可视模式下选择区域后输入 : VIM 会自动补全为 :'<,'>

:n1,n2s/zempty/handsome/g

这里的 n1 和 n2 值得是行号,将会替换掉 n1 到 n2 的所有 zempty 为 handsome.

:%s/zempty/handsome

替换掉文件中所有行第一次出现 zempty 的地方为 handsome

:%s/zempty/handsome/g

将会把全文中的 zempty 替换成 handsome

:%s/zempty/handsome/i

替换掉所有行第一个出现 zempty (不区分大小写) 为 handsome

:%s/zempty/handsome/gi

替换掉所有行出现 zempty (不区分大小写) 为 handsome

:%s/zempty/handsome/gc

全局查找"zempty"替换为"handsome"并且需要确认

VIM 执行 Linux 命令

:!command,执行完命令以后按下键盘上的 Enter 就会返回到文件

:r !command

VIM 执行命令,并且添加结果至操作文本光标处

:r !date

执行 date 命令显示时间,并且添加命令结果到文本中

定义快捷键

:map ^M I#<ESC>

上面的例子也就是通过快捷键 Ctrl + m 在文件光标处所在行的行首插入 # ( # 代表注释)。

: 后面的 map 是关键字 ,后面是 key 和 value 。

key 对应的是 ^M , 这个 key 需要强调一下 ^M 是 Ctrl + v + m 打出来的(按下这三个键,VIM 会显示成 ^M ),^M 代表快捷键是Ctrl + m , Ctrl + v + n 就是 ^N ,代表快捷键是 Ctrl + n 。Ctrl + v + x 就是 ^X (这里的 x 是代表 26 个字母中的任意一个) 代表快捷键 Ctrl + x。

value 对应的是 I#<ESC>,表示按下快捷键以后执行的相应操作,I 是切换光标至行首并切换到编辑模式,#是行首输入的内容( # 是VIM 文件中的注释符号 ),<ESC> 是退出编辑模式。

举例如下:

:map ^D Ahelloworld<ESC>表示在文件的光标所在行的行尾,添加 helloworld 字符串,按住组合键 ctrl + d 就会执行操作。

使用 ab

:ab email xxxx@gmail.com

: 后面的 ab 是关键字 ,该命令执行后,然后切换到编辑模式下,输入 email 会把输入的 email 自动替换成 xxxx@gmail.com。

这个命令主要是处理频繁输入同样的长串字符串。

在当前行上移动光标

0

移动到行头

^

移动到本行的第一个不是 blank 字符

$

移动到行尾

g_

移动到本行最后一个不是 blank 字符的位置

w

光标移动到下一个单词的开头

e

光标移动到下一个单词的结尾

fa

移动到本行下一个为 a 的字符处

fb

移动到本下一个为 b 的字符处

nfa

移动到本行光标处开始的第 n 个 字符为 a 的地方(n 是 1,2,3,4 ... 数字)

Fa

 同 fa 一样,但光标移动方向同 fa 相反

nFa

同 nfa 类似,但光标移动方向同 nfa相反

ta

移动光标至 a 字符的前一个字符

nta

移动到第二个 a 字符的前一个字符处

Ta

同 ta 移动光标方向相反

nTa

同 nta 移动光标方向相反

; 和,

当使用 f, F, t ,T, 关键字指定字符跳转的时候,

使用 ;可快速跳转到下一个指定的字符

使用可快速跳转到前一个指定的字符

跨行移动光标

[n]f{word}

 f 用来查找在当前行 当前光标后是否存在某个字符 {word} 如果存在则将光标移动过去

$

$ 跳转到行尾

^

^ 跳转到行首

%

 括号匹配跳转 () [] {},需要把光标先移动到括号上

* #

匹配光标当前所在的单词,移动光标到下一个(或者上一个)匹配的单词( * 是下一个,# 是上一个)

[n]h/j/k/l

数字加上方向键 代表重复运行多少次

2jj 向下移动两行

10l 向右移动 10 个字符

3kk 向下移动 3

20h 向左移动 20 字符

G

G 移动到最后一行

nG

光标定位到第 n 行的行首

gg

光标定位到第一行的行首

H | M | L

H   光标定位到当前屏幕的第一行行首

M  光标移动到当前屏幕的中间

L   光标移动到当前屏幕的尾部

[n]w

移动到后面 word 的开始位置,前面加上数字 代表重复多少次

e

e 移动到下一个词语的末尾

b

b 移动到上一个单词的开头

zz

zz改变窗口的整体位置,将当前光标所在处 移动到窗口中部

zt

把当前行移动到当前屏幕的最上方,也就是第一行

zb

把当前行移动到当前屏幕的尾部

翻页操作

ctrl+f 查看下一页内容

ctrl+b 查看上一页内容

删除 d

d 是删除的意思,通常搭配一个字符 ( 删除范围 ) 实现删除功能,常用的如下:

dw 删除一个单词

dnw 删除 n 个单词,

dfa 删除光标处到下一个 a 的字符处( fa 定位光标到 a 处 )

dnfa 删除光标处到第 n 个 a 的字符处

dd 删除一整行

ndd 删除光标处开始的 n 行

d$ 删除光标到本行的结尾

dH 删除屏幕显示的第一行文本到光标处

dG 删除光标所在行到文本的结束

复制 y

y 是复制的意思,通常搭配一个字符(复制范围)实现复制的功能,常用的如下:

yw 复制一个单词,还有 ynw

yfa 复制光标到下一个 a 的字符处,还有ynfa

yy 复制一行,还有 nyy

y$ 复制光标到本号的结尾

yH 复制屏幕显示的第一行文本到光标所在的行

yG 复制光标所在行到文本的结束

黏贴 p

p ,P是黏贴的意思,当执行完复制或者黏贴的命令以后,VIM 会把文本寄存起来。

p 在光标后开始黏贴

P 大写的 P 光标前开始粘贴

撤销操作和恢复

u 撤销刚才的操作

ctrl + r 恢复撤销操作

删除字符操作和替换

x 删除光标当前所在的字符

r 替换掉光标当前所在的字符

R 替换掉从光标开始以后的所有字符,除非 <ESC > 退出,或者 jj (代替 <ESC> 上文有提到)退出。

大小写转换

~ 将光标下的字母改变大小写

3~ 将光标位置开始的3个字母改变其大小写

g~~ 改变当前行字母的大小写

gUU 将当前行的字母改成大写

guu 将当前行的字母全改成小写

3gUU 将从光标开始到下面3行字母改成大写

gUw 将光标下的单词改成大写。

guw 将光标下的单词改成小写

VIM 的重复命令

. 该命令是重复上一个操作的命令

n<command>重复某个命令 n 次,如 10p复制 10 次,10dd 删除十次。

VIM 可视化模式(Visual-mode)

v,V,Ctrl+v

v字符可视化

v字符可视化,按下键盘上的v以后,屏幕底部应该会有一个 VISUAl 的提示,操作 h,j,k,l就选中文本,继续按 v 退出可视化模式。

V 行可视化

V 行可视化,按下键盘上的 V 以后,屏幕底部应该有一个 VISUAL LINE 的提示,操作 j,k 可以向上或者向下以行为单位选中文本,继续按下 V 退出可视化模式。

Ctrl+v 块状可视化

Ctrl+v 块状可视化,按下键盘上的 Ctrl+v 以后,屏幕底部应该会有一个提示 VISUALBLOCK ,可以通过 h,j,k,l 块状的操作选择区域,这是很多编辑器都不可以做到的,继续按下 Ctrl+v 会退出可视化模式。

可视化模式下操作文本

可视化模式下选择操作区域以后,

按下 d会删除选择的区域,

按下 y 会复制选择的区域,按下 p 会黏贴选择的区域。

可视化模式下 v 的特殊操作

当操作的文本光标在 “”,‘’ ,(),{} ,[(双引号,单引号,小括号,大括号,中括号)当中的时候,可以通过

 va"选中 ”“ 内的所有内容包括双引号"" ,

vi" 选中 "" 内的所有内容,不包括 ""。

va,vi 会快速选择区域,va 后面会紧跟一个区域结束标志,a 会选中结束符标志,i 就不会。例子如下:

"hello world [VIM is so strong],{we all can master vim skill}"

假设当前光标定位在上面的文本 M 处:

va] 操作将会选中以下文本(加粗部分):

“hello world[VIM is so strong],{we all can master vim skill}“

vi] 操作将会选中如下的区域,没有包含 []:

“hello world [VIM is so strong],{we all can master vim skill}“

块区域下的特殊操作

Ctrl+v 选中块区域以后,按下大写的 I 或者 A 可以在区域的前面或者后面输入内容,按下 jj 或者 <ESC>,可以看到选中的区域前面或者后面会有输入的内容

VIM 的代码提示功能

在编辑模式下 ,快捷键 Ctrl+n 或者 Ctrl+p 会有代码提示功能,我们可以实现快速录入的效果

VIM 的宏录制

假设需要操作的文本如下,需要将如下文本的每一行的行首插入入一个 tab 键。

hello

hello world

hello world , vim

宏录制的录制操作

先将光标移动到第一行,在普通模式下按下 q 键(宏录制是 q 键启动的),在按一个 a (字母随意),表示该宏注册为 a ,按下 I 在行首插入一个 tab 键,按下jj或者 <ESC>退出编辑模式,按下 j 将光标移动到下一行行首,最后按下 q 键完成录制操作(宏录制是 q 键结束的)。

总结上面例子的操作流程:

q → a → I → tab → jj → j → q

上面的例子成功地把在行首插入 tab 的功能录制了下来,那么如何应用到其他行呢?

宏录制的使用

上述的例子,在正常模式下,按 @a执行宏录制的一系列动作,将会在第二行执行插入 tab 。

@@ 是对上一次宏使用的重复操作。n@a 就会执行 n 次一系列的动作。使用宏录制可以一次执行一系列的操作,可以针对一些重复度较高的操作进行宏录制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

issta

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值