Vim 超实用指南,收藏这一篇就够了!

Vim 超实用指南,收藏这一篇就够了!

vim 是一个 Unix 文本编辑器,它以快速高效而闻名,是在终端中运行的小应用程序(当然也有图形界面),它最主要的特点是完全可以通过键盘控制,而不需要菜单栏或鼠标。

例如,将文本插入到文件中,按 i 键并输入。浏览文本或输入命令,在键盘上按 Esc,然后按下对应的任何键或组合键。对于大多数人来说,是一种非常不寻常的文本编辑方式,但这是基于 Linux 环境工作的开发者编辑配置文件、更改脚本、编写代码等操作的主流方式。

本文将介绍一些必要的基本命令,以供大家很快很容易地掌握 vim 编辑器。建议初学者在使用中进行学习,而不是只看不动手。不实战操作,那你可能很快忘记这些命令。

使用 vim 打开文件后,一般会用到三种模式:命令模式(command mode)、输入模式(insert mode)和底行命令模式(last line mode)。

刚启动 vim 时,默认进入命令模式。这时候,我们敲打键盘的字母会被识别为不同的命令。如方向键 h、j、k、l;输入键 i、a、o,切换到输入模式;冒号键:,切换到底行命令模式。

进入输入模式,可以任意的码入字母、符号,按esc 键退出到命令模式。

在底行命令模式,可以输入单个或者多个命令,按enter 键结束运行。

1、vim 的进入和退出:vi、vim、:q、:q!、:wq在 terminal 中直接敲 vi 或 vim 打开文本

:q 退出文件

:q! 强制退出文件,丢弃你所做的任何改动

:wq 保存修改,然后退出文件

2、移动光标:h、j、k、l 键h 左移、l 右移、j 下移、k 上移,熟练使用 hjkl 键,习惯之后我们能很快地在屏幕四处移动光标。

3、插入、删除和撤销:i、A、x、u 键、ctrl+r在 command 模式下:按下i 键可以进入 insert 模式,在光标后插入文字,输入完成按esc 键(A 键,光标移动到本行末输入);按下x 键可以删除光标所在位置的字符;按下u 键可以撤销操作,回到上一步。ctrl+r撤销掉撤销命令。

按下 esc 键会回到 command 模式或者撤销一个不想输入或部分完整的命令。

4、删除类命令:dw、d$、dddw 从光标处删除至一个单词的末尾

d$ 从光标处删除至本行末尾

dd 删除光标所在行

5、在动作前输入数字会使操作重复那么多次3dd 执行三次光标所在行,即往下删除三行

2w 使光标向前移动两个单词

0 移动到光标的行首

6、关于定位和文件状态gg 跳到文件第一行

G / shift+g 跳到文件最后一行

ctrl+g 显示当前编辑文件名和文件中光标位置

gf 进入光标所在位置路径的文件

7、关于搜索命令/ 加上字符串可以用于在当前文件中查找该字符串

? 用于反向查找

例如:/error <回车> 即可在文件中查找 error

n 键向下继续搜索,N 键或 shift+n 键向上继续搜索(shift+小写=大写)

8、替换命令:s/old/new/g g 是全局进行匹配

多种操作需要多加学习应用

9、在 vim 内执行外部命令输入 :! 然后输入外部命令即可执行该外部命令

所有的 : 命令都必须以敲回车键结束

10、使用操作符 y 复制文本,使用 p 粘贴文本配合可视模式使用

多行操作是经常会用到的,切记!

11、set 设置一些选项:set xxx 可以设置 xxx 选项。一些有用的选项如下:

'ic' 'ignorecase' 查找时忽略字母大小写

'is' 'incsearch' 查找短语时显示部分匹配

'hls' 'hlsearch' 高亮显示所有的匹配短语

12、获取在线系统帮助如下三种方法:

按下 键 (如果键盘上有的话)按下 键 (如果键盘上有的话)输入 :help <回车>13、启用更多的 vim 的特性Vim 的功能特性要比 Vi 多得多,但其中大部分都缺省没有启用。为了使用更多的特性,需要创建一个 vimrc 文件。

开始编辑 vimrc 文件,具体命令取决于所用的操作系统::edit ~/.vimrc 这是 Unix 系统所使用的命令

:edit $VIM/_vimrc 这是 MS-Windows 系统所使用的命令

接着读取 vimrc 示例文件的内容::r $VIMRUNTIME/vimrc_example.vim

保存文件,命令为::write

下次启动 Vim 时,编辑器就会有了语法高亮的功能。

可以把喜欢的各种设置添加到这个 vimrc 文件中。

要了解更多信息请输入 :help vimrc-intro

14、使用键进行命令行补全补全对于许多命令都有效,当输入: 命令时,tab 键可以匹配补全。

15、vim 自带了一个教程说明,我们可以直接输入vimtutor,打开教程做相应的练习即可。全局:h[elp] 关键字 - 打开关键字帮助:sav[eas] 文件名 - 另存为:clo[se] - 关闭当前窗口:ter[minal] - 打开一个 shell 窗口K - 打开光标所在单词的 man 页面移动光标h - 左移光标j - 下移光标k - 上移光标l - 右移光标H - 移动到当前页面顶部M - 移动到当前页面中间L - 移动到当前页面底部w - 移动到下个单词开头W - 移动到下个单词开头(单词含标点)e - 移动到下个单词结尾E - 移动到下个单词结尾(单词含标点)b - 移动到上个单词开头B - 移动到上个单词开头(单词含标点)ge - 移动到上个单词结尾gE - 移动到上个单词结尾(单词含标点)% - 跳转到配对的符号(默认支持的配对符号组:: '()', '{}', '[]' - 在 vim 中使用 :h matchpairs 获得更多信息)0 - 移动到行首^ - 移动到行首的非空白符$ - 移动到行尾g_ - 移动到行内最后一个非空白符gg - 移动到文件第一行G - 移动到文件最后一行5gg or 5G - 移动到第五行gd - 跳转到局部定义gD - 跳转到全局定义fx - 移动到字符 x 下次出现的位置tx - 移动到字符 x 下次出现的位置的前一个字符Fx - 移动到字符 x 上次出现的位置Tx - 移动到字符 x 上次出现的位置的后一个字符; - 重复之前的 f、t、F、T 操作, - 反向重复之前的 f、t、F、T 操作} - 移动到下一个段落 (当编辑代码时则为函数/代码块){ - 移动到上一个段落 (当编辑代码时则为函数/代码块)zz - 移动屏幕使光标居中Ctrl + e - 向下移动屏幕一行(保持光标不动)Ctrl + y - 向上移动屏幕一行(保持光标不动)Ctrl + b - 向上滚动一屏Ctrl + f - 向下滚动一屏Ctrl + d - 向下滚动半屏Ctrl + u - 向上滚动半屏插入模式 - 插入/追加文本i - 从光标前开始插入字符I - 从行首开始插入字符a - 从光标后开始插入字符A - 从行尾开始插入字符o - 在当前行之下另起一行, 开始插入字符O - 在当前行之上另起一行, 开始插入字符ea - 从当前单词末尾开始插入Ctrl + h - 在插入模式下,删除光标前的字符Ctrl + w - 在插入模式下,删除光标前的单词Ctrl + j - 在插入模式下,另起一行Ctrl + t - 在插入模式下,向右缩进,宽度由 shiftwidth 控制Ctrl + d - 在插入模式下,向左缩进,宽度由 shiftwidth 控制Ctrl + n - 在插入模式下,在光标之前插入自动补全的下一个匹配项Ctrl + p - 在插入模式下,在光标之前插入自动补全的上一个匹配项Ctrl + rx - 插入寄存器 x 的内容Ctrl + ox - 暂时进入正常模式以发出一个正常模式命令 x。Esc - 退出插入模式编辑文本r - 替换当前字符R - 在 ESC 按下之前,替换多个字符J - 将下一行合并到当前行, 并在两部分文本之间插入一个空格gJ - 将下一行合并到当前行, 两部分文本之间不含空格gwip - 重新调整段落g~ - switch case up to motiongu - 小写操作修饰符gU - 大写操作修饰符cc - 将光标所在的行删除, 然后进入插入模式C - 将光标处到行尾删除, 然后进入插入模式c$ - 将光标处到行尾删除, 然后进入插入模式ciw - 将光标所在的单词删除, 然后进入插入模式cw or ce - 从光标位置开始, 修改单词s - 删除当前字符, 然后进入插入模式S - 清空当前行, 然后进入插入模式 (同 cc)xp - 当前字符后移u - 撤销U - 撤销上一次的改动行的操作Ctrl + r - 重做(取消撤销). - 再次执行上个命令选择文本(可视化模式)v - 进入可视化模式, 移动光标高亮选择, 然后可以对选择的文本执行命令V - 进入可视化模式(行粒度选择)o - 切换光标到选择区开头/结尾Ctrl + v - 进入可视化模式(矩阵选择)O - 切换光标到选择区的角aw - 选择当前单词ab - 选择被 () 包裹的区域(含括号)aB - 选择被 {} 包裹的区域(含花括号)at - 选择被 <> 标签包裹的区域(含<>标签)ib - 选择被 () 包裹的区域(不含括号)iB - 选择被 {} 包裹的区域(不含花括号)it - 选择被 <> 标签包裹的区域(不含<>标签)Esc - 退出可视化模式可视化模式命令 - 向右缩进< - 向左缩进y - 复制d - 剪切~ - 大小写切换u - 将选中文本转换为小写U - 将选中文本转换为大写剪切, 复制, 粘贴yy - 复制当前行2yy - 复制 2 行yw - 复制当前单词yiw - 复制光标处的单词yaw - 复制光标处的单词及其前后的空格y$ - 复制, 从光标位置到行末p - 在光标后粘贴P - 在光标前粘贴dd - 剪切当前行2dd - 剪切 2 行dw - 剪切当前单词diw - 删除光标处的单词daw - 删除光标处的单词及其前后的空格D - 剪切, 从光标位置到行末d$ - 剪切, 从光标位置到行末 (同D)x - 剪切当前字符文字缩进 - 将当前行向右缩进,宽度由 shiftwidth 控制<< - 将当前行向左缩进,宽度由 shiftwidth 控制% - 向右缩进 () 或 {} 内的区域 (光标需置于括号上)ib - 向右缩进 () 内的区域at - 向右缩进 <> 标签内的区域3== - 自动缩进 3 行=% - 自动缩进 () 或 {} 内的区域 (光标需置于括号上)=iB - 自动缩进 {} 内的区域 (光标需置于括号上)gg=G - 自动缩进整个缓冲区]p - 粘贴并调整缩进至当前行退出:w - 保存:w !sudo tee % - 使用 sudo 保存当前文件:wq or :x or ZZ - 保存并退出:q - 退出(修改未保存时警告):q! or ZQ - 不保存强制退出:wqa - 保存所有标签页并全部退出查找/替换/pattern - 查找pattern?pattern - 向上查找patternn - 查找下一个N - 查找上一个:%s/old/new/g - 替换全部:%s/old/new/gc - (逐个)替换:noh[lsearch] - 移除搜索结果的高亮显示多文件搜索:vim[grep] /pattern/{{file}} - 在多个文件中搜索 pattern:cn[ext] - 移动至下一个:cp[revious] - 移动至上一个:cope[n] - 打开搜索结果列表标签:tabnew or :tabnew {page.words.file} - 在新标签中打开文件Ctrl + wT - 将窗口变成标签gt or :tabn[ext] - 切换到下一个标签gT or :tabp[revious] - 切换到上一个标签gt - 切换到第# 个标签:tabm[ove] # - 移动标签到第# 位(下标从 0 开始):tabc[lose] - 关闭当前标签:tabo[nly] - 关闭其他标签:tabdo command - 在所有标签中执行命令多文件编辑:e[dit] 文件名 - 新建缓冲区打开 filename:bn[ext] - 切换到下个缓冲区:bp[revious] - 切换到上个缓冲区:bd[elete] - 关闭缓冲区:ls or :buffers - 列出所有打开的缓冲区:sp[lit] 文件名 - 新建缓冲区打开 filename 并水平分割窗口:vs[plit] 文件名 - 新缓冲区打开 filename 并垂直分割窗口:vert[ical] ba[ll] - edit all buffers as vertical windows:tab ba[ll] - edit all buffers as tabsCtrl + ws - 水平分割窗口Ctrl + wv - 垂直分割窗口Ctrl + ww - 在窗口间切换Ctrl + wq - 关闭窗口Ctrl + wx - 将窗口切换到下一个窗口Ctrl + w= - 使所有窗口的高度和宽度相等Ctrl + wh - 切换到左侧窗口Ctrl + wl - 切换到右侧窗口Ctrl + wj - 切换到下侧窗口Ctrl + wk - 切换到上侧窗口Ctrl + wH - 使游标所在视窗全高并移至最左 (最左垂直视窗)Ctrl + wL - 使游标所在视窗全高并移至最右 (最右垂直视窗)Ctrl + wJ - 使游标所在视窗全宽并移至最下 (最下水平视窗)Ctrl + wK - 使游标所在视窗全宽并移至最上 (最上水平视窗)

END

文章来源:处芯积律推荐阅读

PCIe 6.0 :Virtual Channel 总结告别繁琐 JSON,wavedraw 用 Python 重新定义时序图绘制VCD文件秒变专业时序图:wavedraw让仿真波形更美观protocol——命令行绘制协议图大杀器更多 IC 设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

相关推荐

1990年国际足联世界杯
365bet指定开户网址

1990年国际足联世界杯

📅 06-30 👁️ 8212
安卓手机怎么录屏?安卓手机录屏的3个方法!
best365提现多久到账

安卓手机怎么录屏?安卓手机录屏的3个方法!

📅 07-08 👁️ 7383
极品飞车18豪华版图鉴里有多少辆车?
best365提现多久到账

极品飞车18豪华版图鉴里有多少辆车?

📅 07-03 👁️ 2216
LOL牛头皮肤价格表有哪些
bat365手机版app

LOL牛头皮肤价格表有哪些

📅 07-08 👁️ 5053
科普文章
365bet指定开户网址

科普文章

📅 06-29 👁️ 7087
“沤梦”的繁体字
best365提现多久到账

“沤梦”的繁体字

📅 07-07 👁️ 9060
大佬们。指点一下这几款低音炮怎么样。或者推荐个便宜的我先玩玩。
昔日差生,今日服装大亨!号称 “睡衣之王”的他要挑战英国品位
QQ空间注销(关闭)的常见问题
best365提现多久到账

QQ空间注销(关闭)的常见问题

📅 07-08 👁️ 3834