Vim新手之路:熟练使用操作指令

一. 前言

在编程世界的浩瀚星空中,Vim就像一颗璀璨的星辰,历经数十年风雨,依然熠熠生辉。Vim,全称Vi IMproved,是从古老的Vi编辑器发展而来的一款文本编辑器。自1991年首次发布以来,Vim凭借其强大的功能、灵活的定制性以及无与伦比的效率,赢得了全球无数程序员和开发者的青睐。它不仅是一款编辑器,更是程序员手中的一把利剑,助力程序员在代码的海洋中劈波斩浪,所向披靡。

1.1 Vim的演化史

Vim的历史可以追溯到上世纪70年代,当时Bill Joy在Unix系统上开发了Vi编辑器。随着时间的推移,Vi逐渐成为了Unix及类Unix系统上的标准文本编辑器。而Vim,作为Vi的改进版,不仅继承了Vi的所有优点,还加入了更多的现代化特性和功能。Vim的独特魅力在于其高度可定制性和强大的文本处理能力。无论是简单的文本编辑,还是复杂的代码重构,Vim都能游刃有余地应对。此外,Vim还提供了丰富的插件和脚本支持,使得用户可以根据自己的需求进行个性化定制,进一步提升工作效率。

1.2 为何选择Vim

在众多的文本编辑器和IDE中,Vim之所以能成为高效编码的首选工具,我认为原因主要有以下几点:

  • 轻量级与高效: Vim不依赖于图形界面,运行速度快,占用资源少。即使我们在老旧或资源受限的计算机上,也能保持流畅的操作体验。
  • 键盘为中心: Vim强调通过键盘快捷键来完成大部分操作,极大地减少了鼠标的使用,从而提高了编码速度。熟练掌握Vim快捷键后,我们可以在不离开键盘的情况下完成几乎所有的编辑任务。
  • 强大的文本处理能力: Vim提供了丰富的文本处理命令和正则表达式支持,使得用户能够轻松地进行复杂的文本编辑和查找替换操作。
  • 高度可定制: Vim的配置文件(.vimrc)允许用户根据自己的喜好和习惯进行个性化定制,包括快捷键、插件、颜色主题等。这种高度可定制性使得Vim能够满足不同用户的需求。
  • 社区支持: Vim拥有庞大的用户社区和丰富的资源库。如果我们在使用Vim过程中遇到问题,也能在社区中找到答案或得到帮助。除此此外,社区还不断贡献出各种优秀的插件和脚本,使得Vim的功能日益强大与健壮。

1.3 如何使用Vim进行高效编码

基于Vim的这些独特魅力和优势,我将给大家分享Vim的一些基础操作的使用技巧。希望能够帮助大家快速掌握Vim,从而提升代码开发效率。

二、基础篇(快速上手Vim)

2.1 Vim的基本模式

Vim编辑器有3种工作模式,分别是命令模式(command mode)、插入模式(insert mode)和末行模式(last line mode)。

  • 命令模式: 命令模式是Vim的默认模式,用户打开Vim时便进入命令模式。在命令模式下输入的键盘动作会被Vim识别成命令而非文本输入。比如,输入"i",Vim识别的是i命令。用户可以输入命令来控制屏幕光标的移动、文本的删除或某个区域的复制或者撤销等,也可以进入末行模式或文本模式。
  • 插入模式: 当需要在文本中新增或修改内容时,我们需要进入插入模式。在命令模式下输入i命令就可以进入插入模式,按Esc键可以回到命令模式。在插入模式下,用户可以像使用普通文本编辑器一样输入文本。总之,想要在文本中输入字符,必须处在插入模式下。
  • 末行模式: 命令行模式允许用户执行一些高级命令,这些命令通常与文件的保存、退出Vim、查找替换文本、设置Vim选项等操作有关。在命令模式下按":"键就会进入末行模式。例如,输入":w" 保存文件,":q" 退出Vim(如果文件未修改),":wq"保存并退出Vim,":set nu"设置显示行号等。完成命令输入后,按回车键执行命令。

2.2 三种模式之间的切换

1. 命令模式指令

注意:命令模式下的指令只能在命令模式下使用,在其他模式下无效

字符串中间的 +代表是快捷键操作

  • 从正常模式切换到插入模式
命令 作用
i 进入编辑模式,光标前插入字符
a 进入编辑模式,光标后插入字符
o 进入编辑模式,光标所在行的下一行插入
I 进入编辑模式,光标所在行的行首插入
A 进入编辑模式,光标所在行的行末插入字符
O 进入编辑模式,光标所在行的上一行插入字符
s 删除光标所在字符并进入插入模式
S 删除光标所在行并进入插入模式
  • 移动光标
命令 作用
h 命令模式下的光标移动 左移
j 命令模式下的光标移动 下移
k 命令模式下的光标移动 上移
I 命令模式下的光标移动 右移
0(数字) 光标移到行首,工作模式不变
$ 光标移到行尾,工作模式不变
gg 跳转首行
G 跳转末行
w 正向移动到下一个单词的开头
b 反向移动到下一个单词的开头
f{char} 正向移动到下一个{char}字符所在之处例如fa,移动到下一个a字符
Ctrl + f 屏幕向下移动一页,相当于Page Down键
Ctrl + b 屏幕向上移动一页,相当于Page Up键
Ctrl + d 屏幕向下移动半页
Ctrl + u 屏幕向上移动半页
n + Enter n为数字,光标向下移动n行
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
H 光标移动到屏幕最上方那一行的第一个字符
L 光标移动到屏幕最下方那一行的第一个字符
line-G 命令模式下行跳转 例11G,光标跳到11行
% 大括号跳转命令模式下,光标处于左大括号时,使用%跳转到对应右大括号,再按%跳回去。其他括号也可以这样
  • 删除文本
命令 作用
x 删除光标所在字符,工作模式不变
dx 删除光标所在单词,要求光标在首字母上,如果不在首字母,只会删除当前位置到单词末,工作模式不变
D 删除光标所在位置到行末,工作模式不变
d0 删除光标所在位置到行首,工作模式不变
d$ 删除光标所在位置到行末,工作模式不变
删除指定区域 光标选中要删除的首字符,按v进入可视模式,再使用hjkl移动到要删除的末尾,按d删除
dd 删除光标所在行(dd不是真正意义上的删除,而是剪切,消失的内容去了剪切板)
ndd 删除从光标开始的n行
  • 复制和粘贴文本
命令 作用
yy 复制光标所在行
nyy 复制光标所在位置的n行,包括光标所在行
p 向后粘贴剪切板内容,如果复制整行,这里是粘贴在光标所在位置的下一行
P 向前粘贴剪切板内容,如果是整行,这里是粘贴在光标所在位置的上一行
  • 撤销操作
命令 作用
u 撤销操作
Ctrl-r 反撤销
  • 搜索和替换
命令 作用
/findname 命令模式下向下查找,按回车键启动查找后,按n,会自动找下一个,N跳到上一个
?findname 向上查找
查找光标所在单词 光标在目标单词上时,*或者#查找下一个,这里不要求光标必须在首字母上
r 命令模式下替换光标选中字符,替换单个字符
从vim中跳转manpage 将光标放在待查看单词上,按K,默认看第一卷n+K,查看第n卷
[+d 查看宏定义:命令模式光标放在待查看词上,即可查看
  • 保存和退出
命令 作用
ZZ 保存退出

2. 末行模式指令

注意:末行模式下的指令只能在末行模式下使用,在其他模式下无效

字符串中间的 +代表是快捷键操作

  • 保存和退出
命令 作用
:q 退出Vim
:q! 强制退出Vim,修改过的文件不会被保存
:w 保存修改过的文件
:w! 强制保存修改过的文件
:wq 保存文件后退出Vim
:wq! 强制保存文件后退出Vim
  • 搜索和替换
命令 作用
:s /待替换词/替换词 单行替换 光标置于待替换行,需自己确定是否替换
:%s /待替换词/替换词 全文替换:这个默认替换每行的首个,一行有多个目标词时,后面的不会变
:%s /待替换词/替换词/g 全文替换:真正意义上的全局替换
  • 分屏操作
命令 作用
:sp 水平分屏
:vsp 竖直分屏
分屏命令+filename 分屏并打开这个文件
Ctrl+w+w 分屏后屏幕切换
:q 退出光标所在窗口
:qall 退出所有窗口
  • 其他操作
命令 作用
:! + 命令 vim下使用shell命令,操作后,会切换至终端显示结果,按Enter后回到vim界面
Ctrl + p 在末行模式下按Ctrl + p快捷键显示末行模式下的上一条命令
Ctrl + n 显示末行模式下的下一条命令

3. 插入模式指令

字符串中间的 +代表是快捷键操作

命令 作用
ESC键 在插入模式下按下 Esc 键会返回到命令模式
Ctrl + [ 与ESC键作用相同

三、Vim配置文件

vim有两个配置文件

Bash 复制代码
1.	/etc/vim/vimrc
2.	~/.vimrc 其中,第二个配置文件会优先加载,属于用户配置

关于vimrc的配置,网上有很多教程,在这里我就不做分享了,大家直接找网上开源的配置直接导入即可。大家可以参考一下这个:Vim的终极配置方案,完美的写代码界面! ------.vimrc

好了,今天的文章就分享到这里,后续如果有其他有用的指令,我也会添加进来,大家有需要的可以关注收藏一下。

相关推荐
虾..3 小时前
Linux 软硬链接和动静态库
linux·运维·服务器
Evan芙3 小时前
Linux常见的日志服务管理的常见日志服务
linux·运维·服务器
hkhkhkhkh1235 小时前
Linux设备节点基础知识
linux·服务器·驱动开发
HZero.chen6 小时前
Linux字符串处理
linux·string
张童瑶6 小时前
Linux SSH隧道代理转发及多层转发
linux·运维·ssh
汪汪队立大功1237 小时前
什么是SELinux
linux
石小千7 小时前
Linux安装OpenProject
linux·运维
柏木乃一7 小时前
进程(2)进程概念与基本操作
linux·服务器·开发语言·性能优化·shell·进程
Lime-30907 小时前
制作Ubuntu 24.04-GPU服务器测试系统盘
linux·运维·ubuntu
百年渔翁_肯肯7 小时前
Linux 与 Unix 的核心区别(清晰对比版)
linux·运维·unix