Vim 使用入门快捷键
Vim 使用入门快捷键
Vim 和 Emac 都是利器啊,前段时间决定熟悉一套跨平台的编辑器,以便在 Win,Mac,Ubuntu 下都有相同的编辑体验。
于是尝试了一下 Vim,使用了一段时间,确实比 UE 之类的要高效。Win 平台下有 gVim, Mac 下也有 MacVim。
Vim 的学习曲线确实有点陡峭,刚开始不是那么容易习惯的。查看帮助文档是必不可少的,其在线中文文档链接如下:
Vim 在线中文文档:http://vimcdoc.sourceforge.net/doc/help.html
这个文档超级大而全,方便查阅,如果想入门试试 Vim 的话,不太适合,下面我整理了一些方便入门的常用快捷键。
===========================================================
模式操作
===========================================================
Vim具有五种基本模式,默认是普通模式,在普通模式下是无法进行编辑的,需要进入插入模式。
(Window 下用记事本打开一个 txt, 默认就是插入模式,所以就可以直接编辑,Vim 不是这样的!!)
===========================================================
普通模式(normal mode)
插入模式(insert mode)
命令模式(command mode)
可视模式(visual mode)
替换模式(replace mode)
其他模式下要回到普通模式:
===========================================================
Esc
Ctrl + c
Ctrl + [
进入插入模式
===========================================================
iinsert 在光标前插入
Iinsert 在当前行的第一个非空白字符之前插入
aappend 在光标后插入
Aappend 将输入点移动到在当前行的行尾来输入文本
o在当前行下方新启一行,并进入插入模式。
O在当前行上方新启一行,并进入插入模式。
ssubstitute 用来删除当前光标下的字符,然后进入到插入模式
cwchange word 用的较少,和 s 相似,只不过删除的单位是单词。
首先删除由光标(包括光标)开始的一个单词,然后进入插入模式,
进入命令模式:
===========================================================
:, /
:之后,使用方向键可以调出历史命令。甚至输入:s之后,
会对历史命令进行过滤,只调出以s开头的历史命令。
:help command查看帮助文档
::查看命令行模式的帮助
进入可视模式:该模式下方便对文本进行选择
===========================================================
v, V, Ctrl+v
vvisual,可视,以字符为单位移动
V可视,以行为单位移动
Ctrl + v可视,以块为单位移动
可视块模式应用:添加多行的 // 注释
首先将光标移动到要该代码块第一行的行首字母上,进入可视块模式,
然后移动光标到该代码块的最后一行的行首字母上,这时会高亮显示一列。
之后键入 I,注意不是i,此时信息区显示的是插入模式了,
然后键入注释符"//",将第一行注释掉,而其他行没有变化。
不用着急,最后键入Esc退回到普通模式。
这时其他被选中的行的前面都添加了注释符,从而都被注释掉了
进入替换模式
===========================================================
r, R
rreplace,该键只是用于替换光标所在的单个字符而已。
R持续替换直至退出 R 模式,在该模式下可以按照 backspace 恢复
===========================================================
关于模式的更多说明请查看Vim帮助文档,使用命令:
:help mode-switching
===========================================================
文件操作
===========================================================
分割窗口
===========================================================
:sp vim.txtsplit,水平分割窗口
:vs vim.txtvertical split,垂直地分割窗口可视块模式来完成了。
窗口切换
===========================================================
Ctrl + w + [h, j, k, l]
Ctrl在Vim中"^"一般表示Ctrl按键
wwindow
h,j,k,l就是上下左右四个方向
关闭窗口
===========================================================
Ctrl + w + [c]关闭当前窗口
Ctrl + w + [o]关闭其他窗口
保存文件
===========================================================
:wwrite,保存当前文件
:wawriteall,保存所有文件
退出文件
===========================================================
:qquit,关闭当前窗口或者当前标签页
:wqwrite + quit,先保存再关闭
===========================================================
导航以及跳转
===========================================================
Vim中的移动可以分为两类:导航以及跳转。
导航是小范围的移动;而跳转是大范围且并不确定执行后光标位置的移动。
Vim帮助文档里面将这类操作叫做motion操作。可查看帮助:
:help motion
导航
===========================================================
h, j, k, l, w, e, b, f, F, t, ,, ;
h, j, k, l上下左右四个方向移动
wword,以单词为单位正向移动,光标停在第一个字母上
eend,以单词为单位正向移动,光标停在最后一个字母上
bback,以单词为单位反向移动,光标停在第一个字母上
f + keyforward,移动到该行的下一个出现字符(key)的位置,
然后可以按下 ; 正向循环移动或者 , 反向循环移动
F + key用法与 f 相同,只不过是反向移动
ttill,效果与 f 类似,只不过 f 会将光标放置在目标字符上,
而 t 是将光标放置在目标字符的前一个字符上。
跳转
===========================================================
^, 0, $, %, [[, ]], gg, G, L, H, M, m, ', :[number]
^移动到本行第一个非空白字符处
0移动到行首(参考命令 I)
$移动到行尾(参考命令 A)
%在本行中正向查找或调整的配对字符(([{}])),
]]组合键,在文本中t跳转到下一个位于行首的'{'字符
[[类似于 ]],只不过是反向
gg跳转到整个文本的第一行
G跳转到整个文本的最后一行
Hhigh,跳转到当前屏幕显示文本范围内的第一行
Llow,跳转到当前屏幕显示文本范围内的最后一行
Mmiddle,将光标移动到屏幕显示文本范围的中间
m组合键,与 Vim 的寄存器有关(请看文档 :help registers)
m - mark,输入 m 之后再输入寄存器序号(a - z, A - Z),
就将当前光标位置信息放到寄存器中保持,相当于设置了书签。
'组合键,后跟寄存器序号,跳转到 m 设置的书签处
:[number]是命令模式下的用法,跳转到指定行,number 为行数
翻页
===========================================================
Ctrl + f, Ctrl + b, Ctrl + d, Ctrl + u
Ctrl + fforward,相当于 PageDown
Ctrl + bback,相当于 PageUp
Ctrl + ddown,正向翻半页
Ctrl + uup,反向翻半页
===========================================================
编辑操作
===========================================================
删除
===========================================================
x, d + [跳转/移动]
x剪切,内容保存在寄存器 x 中
d + 跳转/移动delete,组合键,删除并经内容保存到寄存器 x 中
dwdelete word,正向删除单词
d0反向删除到行首
d$正向删除到行尾
dd删除整行
d^删除之本行第一个非空白字符处
移动
===========================================================
x, y, yy, Y, p, P, "+y, "+p
移动文本其实是一个组合的操作:
首先选择要移动的文本;
然后剪切或者复制该文本;
最后粘帖该文本。
x剪切
yyank,复制,内容保存在寄存器 x 中
Y, yy复制光标所在行
ppaste,将寄存器 x 中保存的文本取出并粘贴在光标位置之后
P同 p, 只是粘贴在光标位置之前
" + y复制文本到系统复制粘帖板(注意不是 Vim 的寄存器 x 了)
" + p是从系统复制粘帖板取出文本进行粘帖操作。
撤销重做
===========================================================
u, Ctrl + r
uundo,撤销
Ctrl + rredo,重做
查找
===========================================================
/ + key
/后跟要查找的字符串,然后输入 n 循环查找。查找字符串支持正则匹配式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架