VIM命令总结(学习笔记)

本文详细介绍了VIM编辑器的高级使用技巧,包括配置、基本操作、移动、查找、复制、粘贴、删除、替换等功能,以及如何通过标记、缩写和宏记录提升效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

坚持用VIM码代码半年多了,用的还不是很6。

什么时候VIM可以用的像IDE一样,也就差不多了。

目录

VIM的配置

VIM的基本操作

移动,跳转,查找

选择,复制,粘贴,删除,替换

标记

缩写,记录操作


VIM的配置

vim ~/.vimrc 进入配置文件

如果不知道vimrc文件在哪,可使用 :scriptnames 来查看

set nu      #行号

set tabstop=4  #一个tab为4个空格长度

set ai  #设置自动缩进

syntax on   #高亮

 

VIM的基本操作

空格键 向右移动一格

x 删除后面的字符 X 删除前一个字符  删除3个字符就是3x  

dd:删除一行   D 删除到行尾 

caw:改写单词  c 相当于 d 变为编辑模式

J:删除换行符,使下一行并上来。     nJ:连接后面的n行

u:撤销上一次操作      U:撤销当前行的所有修改

ctrl+r:对撤消的撤消(可多次跳转,配合u,简直利器)

i 在光标前插入

I 在行首插入 

a 在光标后插入

A 在行末插入

o:在当前行的下面另起一行,并变为插入模式

O:在当前行上面另起一行,变为插入模式

Ctrl+o:临时变成命令模式(一次而已)

:e!:放弃更改,然后相当于重新打开

:help:帮助,可用ZZ退出帮助窗口

ctrl +n 自动补全 ctrl + p 也一样

Ctrl+G:显示当前位置

:set number:设置显示行号,:set nonumber:关闭显示

:set ruler 设置在窗口右下角显示行号,与上面的好处是,节省空间

 

移动,跳转,查找

b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符作为单词间隔符。

$:移动到行尾  3$:移动到3行后的行尾

^:移动到行首,0也是

+:到下一行的第一个字符。

-:到上一行的第一个字符。

Enter:到下一行的第一个字符。

n|:移动到当前行的第n列

e:移到单词的结尾

E:移到单词的结尾(忽略标点符号)

d/it:向后删除到it之前的位置(不删it)。 d?it:向前删除到it之前的位置(删除it)。

' 移动到上一次的修改行

 `` 上次光标停靠的行

fx 向右跳到本行字符x处(x可以是任何字符)

Fx 向左跳到本行字符x处(x可以是任何字符)

tx 和fx相同,区别是跳到字符x前

Tx 和Fx相同,区别是跳到字符x后

%:跳到相对应的括号上,编程时常用

33G:跳转到33行   此时按``可以返回到原来行(相比之下我还是习惯用:33)

gg:文件头   G: 文件尾

30%:跳转到文件的30%处

{  到前一个空行上

}  到下一个空行上

 

/string  查找string,回车后,按n键可以跳到下一个,N上一个,另外按/键后,按上下键可以找到以前查找的记录,同样的 :也有记录

?/string 同上,默认向上查找

:set ignorecase 大小写无关

:set noignorecase 大小写敏感

 

# 到与当前单词相同的上一个单词上, * 到与当前单词相同的下一个单词上

:set hlsearch  高亮显示查找结果(:set hls相同)

:set nohlsearch  取消高亮

:nohlsearch  去掉当前显示的高亮(一次性)(:noh相同)

 

>>   向右移动本行一段距离     <<   向左移动本行一段距离    3<<    把下面3行(包括本行),向左移动一段距离     :20,30>>  把20行到30行向右移动一段距离

[[是跳到函数头。

除非某语言对这个键映射了相应的功能,否则对于很多语言来说,它是向前找一个第一列的字符为 { 的行。一般,满足这个条件的就是函数定义的开始。

]] 是向后找函数头。[] 是向前找函数尾,][ 是向后找函数尾。

 

"H"意为Home, "M"为Middle, "L"为Last.  跳转到当前屏幕页面的上中下位置

ctrl+u\d  向上\下滚动半屏

ctrl+e\y  向上\下滚动一行

ctrl+b\f  向上\下滚动一屏  

nH、nL 移动到距离屏幕顶部和顶部n行的位置。

zz:将当前行滚动于屏幕中间(同于z.),方便查看上下文  zt置顶(同于z Enter),zb置尾(同于z -)

nz,Enter:将第n行移动到屏幕顶部,同样的,z. 与 z- 前也可以加数字。

 

选择,复制,粘贴,删除,替换

v:进入Visual模式    V:进入 行模式,比如 Vjjd 删除3行  Ctrl+v:可视块模式

v进入可视模式,再13G跳转到相应行,y即可。

:10,20y    回车即可,相应的删除也是如此     :10,20d     

:10,20 m 30    把10行到20行的内容,剪切到30行之后

:10,20 co 30   把10行到20行的内容,复制到30行之后

将光标放在 { 处,然后输入v%就可以把大括号中内容选定

 

yy:复制一行 yaw: 复制一个单词,光标在单词任意位置  ynw: 复制N个单词  ynj: 向下复制n行  ynk: 向上复制n行

P:粘贴至光标前    p:粘贴至光标后    3P:粘贴3次      "2p     粘贴最后第二次的删除的内容

 

X:删除左边的字符,相当于<-键,x删除当前字符  D:相当于d$  C:相当于c$  s:相当于c1  S:相当于cc

s:删除一个字符,并进入编辑模式。 S:删除一整行,进入编辑模式,相当于cc。 ns:删除后面n个字符,并进入编辑模式。

dw:删除单词后面部分  如果要删除整个单词(光标位于单词中间的话),可以 dbw\wdb

de:类似于dw,删除单词后面的部分(只删除到本单词结尾,dw会删除掉单词后面的空格) dE:删除的范围包括标号在内的单词结尾。

dw:删除一个单词(光标后部分)  不如:daw实用  db:删除单词前面部分。    d4w:删除4个单词    d$:删除当前光标到行尾    d^:删除当前光标至行首       d换成c效果是一样的,只是操作完会变成insert模式   dnw: 删除N个单词   dnj: 向下删除n行      dnk: 向上删除n行 

如果光标放在第一个s上,想删除到“(”为止,则输入dt(就可以了,t(的作用是跳到下一个"("前。(此命令作用于本行内)

删除包含keyword字符串的行:?:g/keyword/d

删除空行::%s/^\n$//g

 

r:替换当前字符,但不会进入insert模式    3r:把后面3个字符替换掉    R:替换模式

:%s/str1/str2/g   替换每一行的 str1为 str2

:10,20s/str1/str2/g   替换从行10到行20之间的 str1为 str2

:10,$s/str1/str2/g   替换从行10到最后一行之间的 str1为 str2

:s/str1/str2/g   替换当前行的 str1为 str2

 

.  重复执行命令 

:10,$ w test2.cpp     取行10到最后一行内容,保存到test2.cpp

:r class/User.hpp    读取文件中的内容,插入到当前行的后面

 

标记

 1. ma添加一个标记a 

2.  删除marks,可用命令delmarks + markname 

3.‘a会跳转到添加标记的行

4.:marks 可以查看所有的

5.在开始添加行一个ma,输入y'a会复制当前行到标记a之间的文本。d'a会删除。

 

缩写,记录操作

:ab hw hello world  用一个缩写字符串代替一个长的字符串,此处用 hw 代替 hello world

:unab hw 取消替换

:ab 查看当前有哪些缩写替换

希望输入的字符不被替换时,只需要在缩写后面输入 Ctrl+V

:abbr和:ab相同

此操作在插入模式和命令模式同样生效

 

如果你要重复键入一个短语或一个句子, 也有一种快捷的方法。Vim有一种记录宏的机制。你键入"qa"开始把一段宏记录入寄存器变量`a'中。

按下来你可以象平常一样键入你要的操作, 只是这些操作都会被Vim记录进它命名为`a'的宏中, 再次再下"q"键, 就结束了宏`a'的录制。当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。 使用宏你可以重复多个不同的操作。而不仅仅是插入文本了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值