当前位置:网站首页>vim常用命令详解(vim使用教程)
vim常用命令详解(vim使用教程)
2022-07-28 12:11:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
目录
本文解读来自我对man vim 的解读
vim介绍
vim基本操作
打开文件
options详解
vim的五种模式(是我自己定义的五种)
正常模式必要命令详解
末行模式常用命令详解
可视模式常用命令详解
本文解读来自我对man vim 的解读
当然有很多解读不准确的地方,所有红色标注的地方都是最基本的,也是保证正确的。(不排除我的语言描述有问题)
vim介绍
vim是一个富文本编辑器,是vi编辑器的扩展版本,它可以用来编辑各种文本,尤其是能编辑程序
他和vi相比有很多的优点,可以多次撤销,可以同时打开多个 窗口进行编辑,语法高亮,命令行编辑,在线帮助,可视化选择,等等
vim基本操作
打开文件
vim filename
#example : 使用vim编辑器打开a.txt文件
vim a.txt如果filename 为空,则会打开一个空的文件
vim [options] [filelist] 左右方括号代表集合,也就是指可以有多个option和多个list
options详解
options可以在文件名的前面,也可以在文件名的后面,对于不需要参数的option,可以放在一个破折号(-)后面
+[num] 参数就是一个整数,打开的文件光标会定位到第num行,如果不加这个参数,会定位到最后一行
对于命令 vim +5 a.txt 打开文件后,光标会默认定位到第5行
+/{patterns} 打开的文件会被定位到第一次出现patterns的位置(pattern的英文释义为模式,regex pattern 为正则表达式),关于patterns的具体内容我没有看过,但是正常情况下,你只要输如你想找的内容就好了
命令 vim +/诙谐的 a.txt 的运行结果如下:绿色位置为光标的初始位置,暗黄色位置为所有匹配到的文字
-b 二进制模式
-C 兼容模式,使用这个选项,会使vim更像vi编辑器
-d diff模式,经常用来比较两个版本的代码异同,如果大家用过git,应该对此深有体会
命令 vim -d a.txt b.txt
运行结果如下
所有黑色背景为完全相同的地方,红色背景为完全不同的地方,蓝偏绿色的背景为与另一个文件相比增加的地方,其他的我也不太清楚
-h 显示vim的用法
-m 你可以在打开的窗口中更改,但你将无法对你更改后的文件进行保存,最后使用 :q退出,文件仍是你修改以前的结果
-M 你无法在你打开的窗口中更改,并且无法 对文件进行保存
-N 非兼容模式
-n 将不会使用交换文件,如果电脑断电或者发生崩溃,你的修改可能无法恢复,如果你需要在一个很短的时间对文件保存,你可以使用 :set uc=0,但不可以使用 set uc=200。set uc=0会使你的每次修改都将直接写进文件。
-o[N],打开n个窗口(窗口为栈的方式,及第二个在第一个的下面,第三个在第二的下面),如果没有写N的大小,会为每一个文件都打开一个窗口
对于命令 vim -o a.txt b.txt c.txt,运行结果如下
-O[N],和-o[n]类似,但是窗口为横向排列
对于命令vim -O a.txt b.txt c.txt,运行结果为
-V[N] 啰嗦模式,会显示vim的所有命令,就像linux电脑开机会显示各种命令,每一步执行什么,但是非啰嗦模式会直接打开文件,而电脑的非啰嗦模式就是你没看到那些每步的运行过程,只有一个进度条,进度条完了就是界面。可选参数N为啰嗦模式的值,默认为10,值越大啰嗦的就越厉害,如果值为10,只显示读取文件,读取vimrc,的过程,但是值为100,会显示每一步读取了什么文字,每行的内容是什么
-y 简单模式,就像Windows的记事本一样,鼠标点击哪儿光标就会指像哪。虽然很简单,但是作为一名计算机人,还是会各种命令更有成就感
vim的五种模式(是我自己定义的五种)
- 正常模式:这是最基本的模式,在以下任何模式中都可以通过点击Esc回到正常模式
- 插入模式:在该模式下可通过键盘输入字符串,在正常模式下,按i,a,o都可以进入插入模式,i为从当前光标所在字符的前一个字符开始插入,a为从当前光标的后一个字符开始插入,o为从当前光标的下一行开始插入
- 可视模式:可视模式可以对文本进行选中,然后方便复制,粘贴等操作,在正常模式下只能同时选中一个字符,所以如果你想删除多个字符或者多行字符是比较不方便的—当然在正常模式下确实有命令可以解决这个问题,但是相比可视模式有点复杂,在正常模式按v可进入可视模式,按V可进入可视行模式,安Crtl+v可进入可视块模式,大家 自己实践以下,很容易发现这三种可视模式的差别。另外在可视模式下,也可以用v,V,Crtl+v在三种可视模式下切换
- 替换模式:在正常模式下按R可进入替换模式,从当前光标处开始,键盘输入的字符会替换掉文本已经有的字符
- 末行模式:按:和/可进入末行模式,使用/进入的末行模式主要用来查找字符串,在下面进行详细解释
正常模式必要命令详解
h #左移一个字符
l #右移一个字符
j #下移一行
k #上移一行
dd #删除一整行
x #删除光标所在字符
u #删除字符后撤销
yy #复制当前行
#以上所有所有字符都可以在前面加数字,代表左移n个字符,又移n的字符,复制n行等...
p #进行粘贴操作
0 #移动到行首
g0 #移动到当前屏幕的行首
H #把光标移动到屏幕最顶端的一行
M #把光标移动到屏幕中间一行
L #把光标移动到屏幕最底端的一行
gg #移动到文件的头部
G #移动到文件的尾部
crtl + f #下翻一屏
crtl + b #上翻一屏
crtl + d #下翻半屏
crtl + u #上翻半屏
n% #到文件n%的位置
zz #将当前行移动到屏幕中央
zt #将当前行移动到屏幕顶端
zb #将当前行移动到屏幕底端末行模式常用命令详解
:q #退出当前文件且不保存,q为quit缩写
:q! #强制退出当前文件
:w #保存当前文件,w为write的缩写
:w! #对于只读文件可强制保存更改
:wq #保存并退出
:r filename #在当前位置插入令一个文件
:r !date #在当前位置插入当前日期
:r !command #在当前位置插入其他shell命令的输出结果
:% s/目标字符/替换字符/g #将目标字符替换为 替换字符 最后的g代表全局替换,%代表所有行
% s/目标字符/替换字符/gic #将目标字符替换为 替换字符 ,%代表所有行,最后的g代表全局替换,i代表忽视大小写,c代表每个替换都需要用户确认才可以
:1,4 s/目标字符/替换字符/g #将第一行到第四行的 目标字符替换为 替换字符
/string :在后面的文本中查找字符串可视模式常用命令详解
d #删除选中的字符
y #复制选中的字符
p #粘贴选中的字符建议所有命令读者都自行敲一遍,以增加印象
强调:有些命令我解释的可能不正确,也可能完全是错误的,希望读者可以指正
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128374.html原文链接:https://javaforall.cn
边栏推荐
- 【C语言易错点】第4篇:结构体在内存中存储规则详讲
- Risk analysis of option trading
- Single option trading and cross trade
- Li FuPan: application practice of kata safety container in ant group
- Bull spread portfolio
- [July 5 event preview] Flink Summit
- Comments are not allowed in JSON
- [FPGA]: AD sampling problem
- Understanding of vite2
- Leetcode · daily question · 1331. array sequence number conversion · discretization
猜你喜欢

企业数字化本质

Have a part of the game, after NFT is disabled in my world
![[报错]使用ssh登陆到另一台机器后,发现主机名还是自己|无法访问yarn8088](/img/81/641a5b3445534fc3b8c87ee6deaa64.png)
[报错]使用ssh登陆到另一台机器后,发现主机名还是自己|无法访问yarn8088

【嵌入式C基础】第5篇:原码/反码/补码

Bull spread portfolio

Transaction of MySQL underlying principle (2)
![[FPGA] joint simulation of vivado and Modelsim](/img/da/0f9fbbc30a1d60e06f3e4090d1d6a4.png)
[FPGA] joint simulation of vivado and Modelsim

Unity—“合成大西瓜”小游戏笔记

【C语言易错点】第4篇:结构体在内存中存储规则详讲

How does kotlin help you avoid memory leaks?
随机推荐
[embedded C foundation] Part 4: use of operators
Leetcode 笔记 118. 杨辉三角
管理区解耦架构见过吗?能帮客户搞定大难题的
How many times can the WordPress user name be changed? Attach the method of changing user name
Protobuf data exchange format
Vditor 渲染器如何做到服务端渲染(SSR)?
Low code: reduce technical capability requirements and improve software development efficiency
【嵌入式C基础】第3篇:常量和变量
MySQL practice -- master-slave replication
LeetCode每日一题(2196. Create Binary Tree From Descriptions)
Kotlin是如何帮助你避免内存泄漏的?
[FPGA]: Joint Simulation of FPGA and MATLAB
Mysql中DQL基本练习
CTO of youhaoda, MVP of Huawei cloud, and Zhang Shanyou: build cloud native applications based on kubernetes and dapr
gicv3 spi register
Led aquarium lamp touch chip-dlt8t02s-jericho
Dimming and color matching cool light touch chip-dlt8ma12ts-jericho
2020-12-27
【嵌入式C基础】第2篇:进制转换与BCD编码
【嵌入式C基础】第4篇:运算符的使用