VIM的常用快捷键

在日常使用经常用的vim命令总如下:

1.导航键:

屏幕下滚一行:CTRL + e

屏幕上滚 一行:CTRL + y

屏幕下滚半屏: CTRL + d

屏幕上滚半屏:CTRL + u

回到上次的位置:

复制代码
'' (two apostrophes)
复制代码
or 
复制代码
``(two backticks)

backtick 回到行内的同样位置, apostrophe回到行的开始

2.打开时跳转:

跳转到某行: vim +行号 文件名

$ vim +546 file

跳转到某个函数: vim +/函数名 文件名

$ vim +/function_name file

选择:

virtual模式:v

virtual block模式: Ctrl-v

virtual line模式: Shift-v

virtual block 可以在前面添加字符,然后应用到所以block。virtual line不行。

选择相关的操作:

复制代码
The objects that can be used are:
aw  a word (with white space)           
iw  inner word                  
aW  a WORD (with white space)           
iW  inner WORD                  
as  a sentence (with white space)           
is  inner sentence                  
ap  a paragraph (with white space)          
ip  inner paragraph                 
ab  a () block (with parenthesis)           
ib  inner () block                  
aB  a {} block (with braces)            
iB  inner {} block                  
a<  a <> block (with <>)                
i<  inner <> block                  
a[  a [] block (with [])                
i[  inner [] block   

编辑:

复制12行到18行 : 12,18y

删除到文件末尾: dG

删除到文件开始: dgg

删除12行到18行:12,18d

删除从当前行到N行之间的行: dNG

块缩进: CTRL + v然后选定块,按I,按tab,space等键, 最后按ESC键;或者选定块后,按<<, >>然后 ESC键

查找:

查找光标所在词, 前向查找:星号"*",后向查找:井号"#"

搜索整个词, \<代表词的开始, \>代表词的结尾: \<i\>

搜索以i为开始的词:\<i

查找重复的词, \( \)代表group, \<\w\+\>(词开始\<, 一个或多个词\w, 词结束\>)就是搜索整个词, 然后搜索任意数量的空格(\_s*, \s代表space或者tab,\_s代表space, tab或者换行),最后\1代表在group 1中的词:

\(\<\w\+\>\)\_s*\<\1\>

查找这个或者那个, \| 代表或者的意思:red\|green\|yellow

以下是正则规则:

\ 取消后面所跟字符的特殊含义。比如 \vim\\ 匹配字符串"vim"

\[\] 匹配其中之一。比如 vim 匹配字母"v"、"i"或者"m",a-zA-Z 匹配任意字母

\^ 匹配非其中之一。比如 \^vim 匹配除字母"v"、"i"和"m"之外的所有字符

. 匹配任意字符

* 匹配前一字符大于等于零遍。比如 vi*m 匹配"vm"、"vim"、"viim"......

\+ 匹配前一字符大于等于一遍。比如 vi\+m 匹配"vim"、"viim"、"viiim"......

\? 匹配前一字符零遍或者一遍。比如 vi\?m 匹配"vm"或者"vim"

^ 匹配行首。例如 /^hello 查找出现在行首的单词 hello

匹配行末。例如 /hello 查找出现在行末的单词 hello

\(\) 括住某段正规表达式

查找并删除:

复制代码
查找所有含有George Bush的行并删除 :g/George Bush/ d

查找所有含有George Bush的行并删除它后面的5行 :g/George Bush/ .+5 d

查找所有含有Bush的行并删除它和后面的5行  :g/Bush/ .,+5 d

特殊字符转义:

用back slash来转义特殊字符, 如搜索字符串"/letv/fet":/\/letv\/fet

Note: :g (:global)命令非常有用,它可以对每一行运行任意的:ex 命令去匹配正则表达式。

查找并替换:

在所有行里查找foo,并且替换为bar :%s/foo/bar/g

在所有行里查找foo,并且替换为bar,但是需要确认:%s/foo/bar/gc

仅仅查找整个词foo并替换 :%s/\<foo\>/bar/g

查找并替换,大小写不敏感 :%s/foo/bar/gci

查找并替换,大小写敏感:%s/foo/bar/gcI

在当前行里查找foo,并且替换为bar:s/foo/bar/g

在当前行里查找并替换第一个foo,g是global的意思,整个行:s/foo/bar/

把第10行到第25行保存到文件 temp :10,25 w temp

格式转换:

在windows下编辑的文件为DOS格式,其中特殊字符0d 0a 回车+换行字符 不能够被UNIX正确识别。把DOS模式改为UNIX模式,可以vim里面完成:

首先在vim命令模式下 :set ff? 可以查询当前的文件的格式。 接着可以通过命令 :set ff=unix来把格式转换成UNIX格式,既是0d 0a 被0a取代

配置:

set number: 显示行号

set paste: 取消粘贴时自动添加tab功能

s``et relativenumber or set rnu: 设置相对行号, vim 7.3以后生效

符号简写:

意思Ctrl-R,Ctrl-W

参考文章:

Search and replace | Vim Tips Wiki | Fandom

http://stackoverflow.com/questions/2070120/search-and-delete-multiple-lines

Delete all lines containing a pattern | Vim Tips Wiki | Fandom

http://jeffkreeftmeijer.com/2012/relative-line-numbers-in-vim-for-super-fast-movement/

http://vim.wikia.com/wiki/Search_patterns

相关推荐
淡海水8 小时前
08-03-不可变-ImmutableDictionary-TKey-TValue-与ImmutableHashSet-T-持久化哈希树
数据结构·算法·c#·哈希算法·dictionary·immutable
典典分享指南10 小时前
一品牌多产品线的 GEO 内容矩阵:从策略到落地
java·c#·bash·symfony
今夜有雨.10 小时前
C# 学习文档(零基础入门)
开发语言·学习·c#
软件黑马王子11 小时前
14.事件中心:主要作用和原理
开发语言·前端框架·c#
netho015 小时前
影刀RPA初级证书+ Excel 全自动数据看板
excel·rpa
海盗123416 小时前
微软技术周报 2026-08-31~09-07:GPT-6 Astra 登陆 Foundry、M365 全球认证故障复盘、C# 15 封闭层级
gpt·microsoft·c#
2501_9307077816 小时前
使用C#代码设置 Excel 单元格的背景颜色和图案
excel
ms365copilot17 小时前
Excel Copilot聊天历史|关闭文件后,还能找回之前的AI分析对话
人工智能·excel·copilot
reasonsummer17 小时前
【办公类-115-01】20260906育儿知识(家园小报)批量制作(2026年9月-2027年6月)
开发语言·数据库·c#
SL-staff18 小时前
规则引擎如何实现风控报告的自动化?JVS-Rules提供解决方案
大数据·自动化·excel·规则引擎·jvs-rules·风控报告·数据溯源