文章目录
开篇先上 vim 键盘神图
1)Vim 中的5种编辑模式
在命令行中执行 vim filename ,若 filename 已存在,则 filename 被打开显示其内容;若 firename 不存在,则Vim在第一次存盘时自动在硬盘上新建filename文件。
vim有5种模式:命令模式、输入模式、末行模式、可视化模式、查询模式。
1.命令模式
命令模式是用户进入 Vim 后的初始状态,在此模式中,可输入 Vim 命令,让 Vim 完成不同的工作,如光标移动,删除字符和单词、段落复制等,可以对选定内容进行复制。从命令模式可切换到其他四种模式,也可从其他四种模式返回命令模式。在输人模式下按 Esc键,或在末行模式中输人了错误命令,都会回到命令模式,常用的操作及其说明请见下表:
VIm 光标移动命令
操作说明h (⬅)将光标向左移动一格l (➡)将光标向右移动一格j (⬇)将光标向下移动一格k (⬆)将光标向上移动一格0 (Home)数字0,将光标移动到行首$ (End)将光标移动到行尾PageUp / PageDown快捷键为 Ctrl + B 与 Ctrl + F 上下翻屏H将光标移动到屏幕顶端M将光标移动到屏幕中间L将光标移动到屏幕底端w 或 W将光标移动到下一单词gg将光标移动到文件的行首G将光标移动文件的尾行
Vim命令模式的复制与粘贴命令
操作说明yy 或 Y复制光标所在的整行2yy复制两行,数字可随意更改y^ 或 y0复制光标所在处到行首(不包括光标处的字符)y$复制光标所在处到行尾(包括光标处的字符)yw复制一个单词y2w复制两个单词,数字可随意更改yG复制到文件尾y1G复制到文件首p粘贴到光标所在行的下一行P粘贴到光标所在行的上一行
Vim 命令模式的删除操作命令
操作说明x 或 del删除键删除一个字符2x删除两个字符 ,数字可随意更换X删除光标前端字符dd删除光标所在行dG删除到文件尾d1G删除到文件首D 或 d$删除到行尾d0删除到行首(不包含光标所在字符)2dd删除所在光标处2行,数字可随意更改,d + 方向键删除所在光标处2行 (上或下或一个字符)dw删除到词尾2dw删除2个单词,数字可随意更改2d$删除后n行u撤回上一步操作
Vim 命令模式的撤销操作命令
操作说明u取消上一个变动U取消一行内所有改动
2.输入模式 (命令模式:a、i、o、A、I、O键)
在输入模式下,可对编辑的文件添加新的内容及修改,为此模式的唯一功能(文本输入)。
Vim 输入模式命令
操作说明a在光标后插入内容A在光标当前行的末尾插入内容i在光标之前插入内容I在光标当前的开始部分插入内容o在光标所在行的下面新增一行O在光标所在行的上面新增一行
3.末行模式 (在命令模式按 :)
此模式主要用来进行文字编辑辅助功能,如字符串查找、替代和保存文件等,在命令模式中输入 ”:“ 字符即可进入末行模式。若输入命名出错则返回命令模式。按Esc键即可返回命令模式。
Vim 末行模式命令
操作说明:w保存当前文件:q结束 Vim (不保存):q!强制结束 Vim (不保存):wq 或 :x保存当前文件并退出(可加!强制保存退出):e 文件名在原始窗口中打开新文件,旧文件则要求保存:e!放弃所有更改,重新编辑:r 文件名在当前光标下一行插入文件的内容:r! 命令在当前光标位置插入命令的执行结果:set nu 或 :set nonu显示行号\取消显示行号:number (数字)将光标定位到number行:[range] s///[g,c,i]替换一个字符
在末行模式下,替换命令语法如下:
[range]s/目标字符串/替换字符串/[option]
s(search):表示搜索
pattern:要被替换的字符串
string:将要替换pattern指定的字符串
c(confirm):每次替换前会询问
e (error):不显示错误信息
g(globe):不询问,将做整行替换
i(ignore):不区分大小写
g 一般都要用,否则只会替换每一行的第一个符合条件的字符串。多个选项可以合起来用,如 cgi 表示不区分大小写、整行替换、替换前要询问。
4.可视化模式(命令模式:v)
茬命令模式下输人 v,则进入可视化模式。在该模式下,移动光标以选定要操作的字符串,输入 c 剪切选定块的字符串,输人 y 复制选定块的字符串。
在命令模式中输人 p ,可将复制或剪切的内容粘贴在光标所在位置的右边。
5.查询模式(命令模式:?、/)
在命令模式中输入 “/” “?” 等字符则进人查询模式 (可以看成一种末行模式)、在该模式下,可以向下或向上查询文件中的某个关键字。在查找到相应的关键字后,可以用 n/N 键继续寻找下一个/上一个关键字。
Vim命令模式的查询操作:
操作说明/向下查询?向上查询n继续向下查询N继续向上查询
以上仅是常见的vim命令
2) 使用vim编辑文件(实例)
实例——使用 Vim 编辑文件
1.使用 Vim 编辑一个文件
第1步:执行命令 vim csdn.txt
在终端窗口中执行命令#vim csdn.txt,用 Vim 编辑器来编辑 csdn.txt 文件。
刚进人 Vim 之后,即进人命令模式,此时输人的每一个字符皆被视为一条命令,有效命令会被接收;若是无效的命令则会产生响声,以示警告(个人在安装系统时移除声卡,因为警报声太频繁会引起烦躁)。如果想输入或更改内容请输入a、i、o、A、I、O键。
第 2 步:在输人模式下操作。
在输人模式下就可以输人文件内容了。编辑好文件后,按 Esc 键返回命令模式。
第3步:在命令模式下操作
在命令模式下可以删除文件的内容,可以使用复制和粘贴命令。然后按 Shift 和 : 键进入末行模式。
第4步:在末行模式下操作
在末行模式下,可以执行替换命令。
第5步:保存并退出
在命令模式下,按shift键和 : 键进入末行模式,执行 wq 或 x 命令保存并退出。
2.使用 Vim 编辑多个文件
第1步:在 Vim 中打开另一个文件
命令格式如下:
:edit csdn.txt.bak
Vim 会关闭当前文件打开另一个。如果当前文件被修改过且没有保存,Vim 则会显示错误信息而不会打开新文件
E37: No write sinc last change (use ! to override)
中文状态显示:E37: 已修改但尚未保存 (可用 ! 强制执行)
Tips:
Vim 在每个错误信息的前面都加了一个错误号。如果不明白错误信息的意思,可以从帮助中获得详细的说明,即 :help E37
出现以上问题,有多个解决方法。首先可通过如下命令保存当前文件。
:write
或者强制 Vim 放弃当前修改并重新编辑新的文件。如下:
:edit! csdn.txt.bak
如果想编辑另一个文件,但又不想马上保存当前文件,可以隐藏它。
:hide edit csdn.txt.bak
原来的文件还在那里,只不过看不见。
第2步:文件列表
可以在启动 Vim 的时候指定一堆文件 (加班时经常使用)。例如:
vim aaa.txt bbb.txt ccc.txt
这个命令启动 Vim,并告诉它要编辑 3 个文件,Vim 只显示第 1 个。等编辑完第 1 个以后、,用如下命令可以编辑第 2个。
:next
如果在当前文件中有未保存的修改,会得到一个错误信息而无法编辑下一个文件。这个问题与前一节执行:edit 命令的问题相同。要放弃当前修改。
:next!
但大多数情况下,需要保存当前文件后再进入下一个,这里有一个特殊的命令如下:
:wnext
这相当于执行了下面的两个命令:
:wrtie
:next
要知道当前文件在文件列表中的位置,可以注意一下文件的标题。那里应该显示类似“(2 of 3)”的内容。这表示正在编辑 3 个文件中的第2 个。
第3步:查看文件列表
如果要查看整个文件列表,使用如下命令:
:args
这是argument的缩写,其输出如下内容 (正在编辑的文件会被中括号括起来)
aaa.txt [bbb.txt] ccc.txt
回到前一个文件,可用如下命令:
:wprevious
移动到列表的最后一个文件,可用如下命令:
:last
移动到列表的第一个文件,可用如下命令:
:first
可在 :next 和 :previous 前面加上计数词 (表示跳转第x个文件),命令如下:
:2next
第4步:自动保存文件
当进行多个文件编辑时,时刻要用 :wrtie 保存文件,在大量的编辑工作中非常影响效率,这时候可设置每次修改内容时,自动保存文件,命令如下:
:set autowrite
关闭自动保存:
:set noautowrite
第5步:编辑另一个文件列表
可以编辑另一个文件列表,而不需要退出 Vim 。使用如下命令编辑另外3个文件:
:args 111.txt 222.txt 333.txt
甚至使用通配符 (生产环境中不建议使用)
:args *.txt
当使用了文件列表,并用 Vim 编辑全部文件时,就不能提前退出。假设还没用编辑过最后一个文件,退出 Vim 时会提示错误信息:
E173: 6(文件数量) more files to edit
这时候只要在执行上一次保存命令即可保存退出
第6步:在另一个文件跳转到另一个文件
假设,现在在 111.txt 文件中,执行 :next 命令,跳转到 222.txt 文件里。这是只要安下 Ctrl+^ 组合键 可实现两个文件中来回跳转。
第7步:多文件的编辑
在 Vim 中可以同时打开很个文件进行编辑(无特殊情况建议多开一个终端)。下面介绍相关命令:
横向打开多文件:
:sp 文件名
3.在新窗口中打开新的文件
:e 文件名
查看 Vim 打开了多少个文件,在屏幕下方输出:
:ls
1 %a "111.txt" line 602# "222.txt" line 03"333.txt" line 04"aaa.txt" line 05"bbb.txt" line 06"ccc.txt" line 0
:ls 命令相关说明:
1:表示打开文件的序号
%a :表示文件的代号,表示当前编辑的文件
#: 表示上一次编辑的文件
“111.txt” “222.txt” :表示文件名
line 60 : 表示光标的位置
打开序号文件:此命令用于打开 :ls 看到序号文件
:b (序号)
4.比较文件内容
:set diff
以上是个人在生产环境中的 Vim 常使用的命令及技巧
到此结束
版权归原作者 问芙 所有, 如有侵权,请联系我们删除。