一、Vim的起源与背景Vim原名Vi IMprovedVi的增强版是由布拉德·乔恩逊Bram Moolenaar于1991年发布的。它基于UNIX系统中的Vi编辑器Vi作为一个传统且强大的文本编辑器已经陪伴了几代Linux用户的成长。而Vim则在此基础上进行扩展与优化拥有了更多的功能使得它在编辑工作中更为高效和便捷。与Vi相比Vim不仅仅有基本的编辑功能还提供了丰富的插件扩展、语法高亮、自动完成等功能这些都使得它成为了程序员、开发者和系统管理员必不可少的工具。1.1 安装vim在 Ubuntu 系统上可以通过以下命令安装 Vim代码语言javascriptAI代码解释sudo apt update sudo apt install vim在这里插入图片描述要注意的是当我们以普通用户的身份去下载安装包的时候是需要sudo提权的二、Vim的模式设计极简而深邃命令模式Vim 启动后默认的模式可以使用快捷键执行命令此模式下用户的所有输入都会被当作命令一般不会 给你作为文本输入插入模式用于文本输入按 i 进入插入模式按 Esc 返回普通模式此模式下可以进行代码编写底行模式用于输入命令按 : 进入命令行模式此模式下可以进行退出保存等多种命令操作在这里插入图片描述三、vim的强大功能3.1 打开和退出文件首先我们先创建一个文件之后用vim进入代码语言javascriptAI代码解释touch filename vim filename进入之后默认是命令模式我们可以通过按下 i进入插入模式进行如下代码的编写 在完成输入后按esc返回命令默认之后shift ;同时按下即可弹出左下角的冒号此时可以输入以下命令进行保存退出。:q 如果没有修改直接退出:q! 强制退出不保存修改:wq 保存修改并退出快速按两下大写z也可以实现保存退出。在这里插入图片描述3.2 基本编辑操作进入插入模式按 i在光标前插入或 a在光标后插入。删除字符在普通模式下按 x 删除光标下的字符。撤销操作按 u 撤销操作按 Ctrl r 重做操作。3.3 移动光标需注意在vim中鼠标无法直接参与光标的移动需要通过键盘指令进行。h向左移动一个字符。j向下移动一行。k向上移动一行。l向右移动一个字符。gg移动到文件开头。G移动到文件结尾。Ctrl f向下翻一页。Ctrl b向上翻一页。3.4 删除文字其中#代表数字「x」每按一次删除光标所在位置的一个字符「#x」例如「6x」表示删除光标所在位置的“后面包含自己在内”6个字符「X」大写的X每按一次删除光标所在位置的“前面”一个字符「#X」例如「20X」表示删除光标所在位置的“前面”20个字符「dd」删除光标所在行「#dd」从光标所在行开始删除#行3.5 复制需要注意这些命令都需要在命令模式进行如果在插入模式下会被认为是输入的字符。「yw」将光标所在之处到字尾的字符复制到缓冲区中。「#yw」复制#个字到缓冲区「yy」复制光标所在行到缓冲区。「#yy」例如「6yy」表示拷贝从光标所在的该行“往下数”6行文字。「p」将缓冲区内的字符贴到光标所在位置。注意所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。3.6 替换「r」替换光标所在处的字符。「R」替换光标所到之处的字符直到按下「ESC」键为止。3.7 更改「cw」更改光标所在处的字到字尾处「c#w」例如「c3w」表示更改3个字3.8 跳至指定的行「ctrl」「g」列出光标所在行的行号。「#G」例如「15G」表示移动光标至文章的第15行行首。3.9 撤销上一次操作「u」如果您误执行一个命令可以马上按下「u」回到上一个操作。按多次“u”可以执行多次回复。「ctrl r」: 撤销的恢复3.10 查找和替换查找文本在命令模式下输入 /text 查找 text使用 n 移动到下一个匹配项。 替换文本在底行模式下输入代码语言javascriptAI代码解释:%s/old_text/new_text/g四、vim的强大功能语法高亮 在Vim中语法高亮是其最基础的功能之一。通过启用语法高亮功能Vim可以帮助开发者清晰地区分代码中的不同元素如关键字、变量、函数等。对于编程语言的支持可以通过插件进行扩展Vim几乎支持所有主流编程语言的语法高亮。多文件编辑 Vim并不仅仅局限于一个文件。通过 :split 或 :vsplit 命令你可以轻松地将屏幕分割成多个窗口进行多文件编辑。这种功能极大提高了工作效率尤其是在处理多个文件时你不再需要频繁地切换窗口所有操作都可以在同一界面内完成。插件系统 Vim强大的插件系统使得它可以根据用户需求进行定制和扩展。无论是代码自动补全、Git集成还是Markdown预览、数据库操作Vim几乎可以做到。最流行的插件管理器是Vundle和Pathogen它们让你可以轻松安装和管理插件。搜索与替换 在Vim中查找和替换功能不仅仅限于文本内容。你可以通过正则表达式进行复杂的搜索甚至在整个项目中进行批量替换。命令如 /old/new/g 会将当前行的 old 替换为 new而 :argdo 命令允许你在所有打开的文件中进行替换。自动完成 Vim不仅支持基本的代码补全还能够根据你所输入的上下文自动提供更符合需求的补全项。你可以通过插件如 YouCompleteMe 或 Deoplete 来进一步增强代码自动补全功能提高编码效率。版本控制与Git集成 Vim还拥有强大的Git集成功能。通过安装插件如 fugitive.vim你可以在Vim内执行Git操作如查看版本历史、提交更改、解决冲突等而无需离开编辑器。这种集成方式为程序员带来了极大的便利。分屏操作水平分屏:split 文件名垂直分屏:vsplit 文件名在这里插入图片描述其中vim 文件名wq之后若该文件原先不存在则会自动创建命令行输入vs 文件名可以实现分屏操作ctrl按住不动快速按两下w可以实现光标在分屏幕之间的切换。光标在哪个分屏幕代表正在对该区域进行操作。wq!中的表示强制意为强制保存并退出四、Vim的学习曲线一段与自我对话的旅程Vim被认为有较陡的学习曲线这无疑是事实。刚开始使用时你可能会感到困惑和不适应。特别是与传统的图形化编辑器相比Vim没有鼠标操作所有功能都需要通过键盘快捷键来完成。但这恰恰是Vim的精髓所在它并非让用户去适应而是引导用户从内心开始改变与计算机交互的方式。然而Vim的难学并非毫无意义。每一段痛苦的经历都会带来极大的回报。习惯了Vim的操作你将获得一种与计算机对话的流畅感。它让你摆脱了鼠标的束缚极大地提高了工作效率并让你的思维变得更加简洁和专注。小结在这个信息化时代Vim不仅是Linux用户的必备工具更是一种技术精神的象征。它提醒我们真正的高手并非追求繁琐和浮华而是在简约中找到最深的力量。在Vim的世界里每一次按键都是通向更加高效和自由的道路。愿每一个使用Vim的你都能享受到那份属于文本的极致之美。本篇关于vim编辑器的介绍就暂告段落啦希望能对大家的学习产生帮助欢迎各位佬前来支持斧正