大家好,又见面了,我是你们的朋友全栈君。
目录
本文解读来自我对man vim 的解读
vim介绍
vim基本操作
打开文件
options详解
vim的五种模式(是我自己定义的五种)
正常模式必要命令详解
末行模式常用命令详解
可视模式常用命令详解
本文解读来自我对man vim 的解读
当然有很多解读不准确的地方,所有红色标注的地方都是最基本的,也是保证正确的。(不排除我的语言描述有问题)
vim是一个富文本编辑器,是vi编辑器的扩展版本,它可以用来编辑各种文本,尤其是能编辑程序
他和vi相比有很多的优点,可以多次撤销,可以同时打开多个 窗口进行编辑,语法高亮,命令行编辑,在线帮助,可视化选择,等等
vim filename
#example : 使用vim编辑器打开a.txt文件
vim a.txt
如果filename 为空,则会打开一个空的文件
vim [options] [filelist] 左右方括号代表集合,也就是指可以有多个option和多个list
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的记事本一样,鼠标点击哪儿光标就会指像哪。虽然很简单,但是作为一名计算机人,还是会各种命令更有成就感
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