2022.9.2 vim学习记录
学习网址:https://www.bilibili.com/video/BV1qF411W7bc
一、Why learn vim
•高效的编辑模式
•可扩展性强
•vs code、vs、atom、sublime、intellij idea...几乎所有的主流ide和代码编辑器,甚至emacs,都提供了vim的输入模式
入门较难,挑战性高。
一旦上手将是提高代码生产力的良药。
二、development history
1975年 Emacs
1976年 Vi
•Vim的名字取义为Vi Improved(即Vi的改进版)。
程序员的圈子里面也一直流传着一个段子,说是世界上的程序员分为三种。
使用vim的,使用emacs的,以及使用其他的。
三、vim learning record
请看,有如下三种形态的输入方式
base op
命令操作如下
撤销键:u
重写键:ctrl+r
op | action |
---|---|
w | 跳到下一个单词 |
e | 跳到下一个单词尾部 |
b | 跳到上一个单词(标点符号不包含在单词内) |
B | 跳到上一个单词(标点符号也包含在单词内) |
x | 删除光标所在字符 |
h,j,k,l | 左,下、上、右 |
当然,方向键和backspace也是可以用的,随机应变即可
另:V键可以直接选中当前行
cmd op 1
本表主要展示如何快速移动光标
操作类型 | 操作键 | 功能 |
---|---|---|
翻页 | Ctrl+F | 向下翻动一整页内容 |
Ctrl+B | 向上翻动一整页内容 | |
行内快速跳转 | 数字“0” | 跳转至行首 |
“$”键 | 跳转到行尾 | |
行间快速跳转 | gg | 跳转到文件的首行 |
GG | 跳转到文件的末尾行 | |
#gg | 跳转到文件中的第#行 | |
行号显示 | :set nu | 在编辑器中显示行号 |
:set nonu | 取消编辑器中的行号显示 |
cmd op 2
本表主要展示对内容复制粘贴等操作
操作类型 | 操作键 | 功能 |
---|---|---|
删除 | x | 删除光标处的单个字符 |
dd | 删除当前光标所在行 | |
#dd | 删除从光标处开始的#行内容 | |
替换 | r | 替换单个字符 |
R | 替换多个字符 | |
复制 | yy | 复制当前光标所在行的内容到剪贴板 |
#yy | 复制从光标处开始的#行内容 | |
粘贴 | p | 将缓冲区中的内容粘贴到光标位置处的下一行 |
P | 粘贴到光标位置处之前 |
cmd op 3
本表展示对文字查找替换的基操
OP | FUNCTION |
---|---|
/word | 从上到下查找word单词 |
n | 定位下一个匹配字符串 |
N | 定位上一个匹配字符串 |
base line op
长按esc后的最基本底行命令如下
OP | funcTION |
---|---|
Esc | 退出插入 |
:w | 保存 |
:q | 退出 |
:q! | 强制退出(不保存文件) |
[附:vim学习游戏 跳转连接](
line op 1
底行模式下,不仅是保存退出,还有其他的操作。
下面罗列其他的操作。
function | op | note |
---|---|---|
save file | :w | |
:w /root/newfile | save as other path | |
quit file | :q | no change |
:q! | throw change and quit | |
save and quit | :wq | |
open new file | :e ~/flag.txt | open new file and edit it |
line op 2
此处着重展示一些查找替换的操作
命令 | 功能 |
---|---|
😒/old/new | 将当前行中查找到的第一个字符“old” 串替换为“new” |
😒/old/new/g | 将当前行中查找到的所有字符串“old” 替换为“new” |
:#,#s/old/new/g | 在行号“#,#”范围内替换所有的字符串“old”为“new” |
:%s/old/new/g | 在整个文件范围内替换所有的字符串“old”为“new” |
😒/old/new/c | 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认 |
总结:查找替换命令是 😒,需要指定行数前面加(#,#),需要全部换后面加g,需要确认后面加c(check),全部换是%
那么以上就是一个vim的基础教学了,我们也可以试着写代码了。
后续我会学习相关how to configure vim
和 how to install vim plugin
的内容,敬请关注本博客~~