从劝退到离不开:Vim新手入门实战博客(附高效技巧)
文章目录
- 前言
- 💙一、vim是什么?
- 💜二、为什么要学习vim?
- 💚三、vim总览
- 💔四、vim的基本操作
- 4.1vim正常模式命令集(命令模式)
- 4.2vim底行模式命令集
- 4.3vim视图模式
- 💗五、一些小技巧
- 💖六、对vim作配置
- 总结
前言
像大多数人那样,第一次接触vim编辑器的我,浑身都不习惯,为什么不使用VScode来写代码,反倒是用这个看起来像是几百年前的东西来写,我不理解。但在我熟练掌握之后,我才明白,存在即合理,它存在,就有它的道理。
💙一、vim是什么?
- 就拿我们熟悉的老朋友VScode来讲,VScode属于IDE,全程也叫集成开发环境,也就是说VScode包办了写代码,编译代码,调试代码等等工作,是一个集成工具!
- 而vim呢?vim就是单单拿来写代码的工具,也就是只负责编辑文本,不负责编辑,运行,调试!
💜二、为什么要学习vim?
很多人会问:“我使用那些IDE工具写代码不像吗?为什么要去搞这个反人类的vim编辑器呢?”
1.定位不同:“定制手术刀"vs"全套工具箱”
| 维度 | vim | 主流IDE |
|---|---|---|
| 核心定位 | 纯文本编辑器,极致的效率 | 一站式开发环境,包办全流程 |
| 功能边界 | 只做文本编辑相关的事,不负责编译,调试等 | 从写代码,编译运行到调试等,所有环节都给你安排 |
| 启动与资源 | 毫秒级启动,几乎不占内存,服务器上随手就能开 | 启动慢、吃内存,打开大项目经常要等半天 |
2.操作逻辑:“全键盘流"vs"鼠标+键盘”
- IDE:依赖鼠标,“手脑来回切换”
用IDE写代码时,你需要很频繁在键盘和鼠标之间切换,思路很容易被打乱,编辑效率也被来回切换的动作拖慢 - vim:纯键盘流,“手永远不离开键盘”
vim的核心是[模式化操作],所有移动、修改、复制、删除、搜索的动作,都可以用键盘快捷键完成。熟练后,你写代码手全程放在键盘上,连方向键都不用碰
💚三、vim总览
vim最主要的由三种模式,分别是命令模式(command mode)、插入模式(insert mode)和底行模式(last line mode),各模式的功能区分如下:
- 正常/普通/命令模式
(Normal mode)
控制屏幕的移动,字符、字或行的删除,移动复制某区段及进入insert mode下,或者到last line mode - 插入模式
(insert mode)
只有在insert mode下,才可以做文本输入,按Esc健可回到命令行模式。该模式是我们后面用的最频繁的编辑模式 - 底行模式
(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,按[shift + ;]即可进入该模式
💔四、vim的基本操作
- 在命令行输入
vim 文件名称时,就能进入到文件的编辑画面了,刚开始进入的时候模式默认为命令模式
czh@VM-0-3-ubuntu:~/code/code4-17$ ll total8drwxrwxr-x2czh czh4096Apr1716:46./drwxrwxr-x25czh czh4096Apr1716:46../-rw-rw-r--1czh czh0Apr1716:46test.c czh@VM-0-3-ubuntu:~/code/code4-17$ vim test.c//---进入文件的编辑页面,默认为命令模式[正常模式]切换至[插入模式],插入模式才能输入内容
输入a
输入i
输入o[插入模式]切换至[正常模式]
目前处于[插入模式],就只能一致输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下[Esc]键转到[正常模式]再删除文字[正常模式]切换为[末行模式]
[shift + ;],也就是[:]退出vim及保存文件,在[正常模式]下,按一下[:]进入[底行模式]
:w(底行模式下输入w,保存当前内容到文件)
:wq(输入wq,保存当前内容到文件并退出vim编辑页面)
:q!(输入q!,不保存并退出vim编辑页面)
:wq!(输入wq!,强制保存并退出)
4.1vim正常模式命令集(命令模式)
- 插入模式
按i切换到插入模式[insert mode],从光标开始位置开始输入文件
按a进入插入模式后,是从目标光标所在位置的下一个位置开始输入文字
按o进入插入模式后,是插入新的一行,从行首开始输入文字 - 从插入模式切换为命令模式
按Esc键 - 移动光标
- vim可以用键盘上的光标来上下左右移动,但正规的vim使用小写英文字母[h],[j],[k],[l],分别取控制左、下、上、右移一格
- 按
G:移动到文章最后行的"行首" - 按
$:移动到光标所在行的"行尾" - 按
^:移动到光标所在行的"行首" - 按
w:光标跳到下个字的开头 - 按
e:光标跳到下个字的字尾 - 按
b:光标跳到上个字的开头 - 按
#l:光标移动到该行的第#个位置,如:5l,56l - 按
gg:进入到文本开始(光标回到首行行首) - 按
shift+g:进入文本末端(与大写G功能相同,本质是一个按键) - 按
ctrl+b:屏幕往后移动一页 - 按
ctrl+f:屏幕往前移动一页 - 按
ctrl+u:屏幕往后移动半页 - 按
ctrl+d:屏幕往前移动半页 - 删除文字
x:每按一次,删除光标所在位置的一个字符#x:例如,[6x]表示删除光标所在位置的"后面(包含自己在内)"6个字符X:大写的X,每按一次,删除光标所在位置的"前面"一个字符#X:例如,[20X]表示删除光标所在位置的"前面"20个字符dd:删除光标所在行#dd:从光标所在行开始删除#行,例如[5dd],删除自己所在的一行还有下面的4行- 复制
yw:将光标所在之处到字尾的字符复制到缓冲区中#yw:复制#个字到缓冲区yy:复制光标所在行到缓冲区#yy:例如,[6yy]表示拷贝从光标所在的该行(包括该行)往下数的6行文字p:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能- 替换
r:替换光标所在处的字符,例如[r+5],就把当前光标选中的字符替换成5R:替换光标所到之处的字符,直到按下[Esc]为止- 撤销上一次操作
u:如果你误执行一个命令,想要撤回,可以马上按下[u],[u]可以执行多次ctrl + r:撤销的恢复(撤销你的撤销)- 更改
cw:删除光标所在处的字到字尾处,随后进入插入模式c#w:例如,[c3w]表示更改3个字- 跳转至指定的行
ctrl + g:列出光标所在行的行号(在左下角显示行号)#G:例如,[15G],表示移动光标至文章的第15行行首
4.2vim底行模式命令集
在使用底行模式之前,请记住先按[Esc]确保您目前正处于正常模式,再按[:]即可进入底行模式
列出行号
set nu:输入[set nu]后,会在文件的每一行前面列出行号跳到文件中的某一行
#:[#]号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行查找字符
/关键字:先按[/]键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按[n]会往后寻找到您要的关键字为止?关键字:先按[?]键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按[n]会往前寻找找到您要的关键字为止保存文件
w:在冒号输入字母[w]就可以保存起来保存就是写离开vim
q:按[q]就是退出,单纯退出,写的东西并没有保存!如果无法退出vim,可以在[q]后跟一个[!]强制离开vimwq:一般建议离开时,搭配[w]一起使用,这样在退出的时候还可以保存文件!wq:强制保存退出
4.3vim视图模式
很多刚用 Vim 的人,只会 i 进插入模式改文字,选文本习惯性切鼠标拖选。其实 Vim自带视图模式,纯键盘就能精准选中字符、整行、矩形块,批量删改、复制缩进、批量注释全都能搞定,学会直接告别鼠标选文本。
- 1.字符视图 v
- 进入:普通模式按小写 v
- 特点:按单个字符精准选区
- 操作:按 h/j/k/l 上下左右扩展选中范围
- 适用场景:只选半行、几个单词、一小段局部文字,精细小范围编辑
- 2. 行视图 V(大写)
- 进入:普通模式按大写 V
- 特点:一选就是一整行,按上下键直接多选整行
- 适用场景:批量操作整段代码、连续多行复制删除、整行移动
- 3. 块视图 Ctrl + v(最重要)
- 进入:普通模式按 Ctrl + v
- 特点:矩形列块选中,不是按行流选中,是竖着选一块
- 适用场景(博客必举例子):
- 批量给多行开头加注释 //
- 批量删除每行前面多余的空格、序号
- 批量对齐代码、批量修改竖列同一位置字符
操作方法:
v(字符视图)
假设我们想删除第一行hello czh中的hello
- 光标移到第一行
h上 - 按
v - 按
4 次 l往右选中整个hello - 按
d直接删完
V(行视图)
想一次性复制 / 删除连续好多行代码,就用行视图。假设我们想删除以上5行代码的前4行
- 光标移动到第一行的
h上 - 在首行按下
V进入行视图模式 - 连续按
3下j选中4行代码 - 按
d删除
ctrl+v(块视图)
不像字符视图只能一个一个选中,也不像行视图那样只能一行一行选中,块视图能精准选中任何区域进行操作,假设我们把每行的hello中的he给删了该怎么操作
- 光标移动到第一行的h上
ctrl+v进入块视图- 按1下
l选中第一行的he,再按4下j选中所有行的he - 按
d删除
💗五、一些小技巧
! + 最近一次命令的开头字母 = 再次调用以这个字母开头的最近一次命令
-vim + 行数 文件名 = 打开文件时光标锁定在我们想要指定的行数
💖六、对vim作配置
这块大家知道一下即可
总结
vim是新手学习linux必学的工具,它极简轻量,与我们之前的vscode有着明显的区别,学习这些命令能让我们更快更高效的处理解决问题。
