目录
1. 什么是vim
2. vim的配置
2.1 .vimrc配置文件
2.2 基本的vim配置操作
2.2.1 设置行号
2.2.2 设置高亮
2.2.3 设置Tab宽度
2.2.4 设置自动缩进
2.2.5 一键配置
3. vim的基本操作
3.1 vim打开文件
3.2 vim的三种模式及操作
3.3 常见命令
3.3.1 命令模式下的命令
3.3.2 底行模式下的命令
vim是一种文本编辑器,是Vi编辑器的升级版。因此vim不能像IDE(集成开发环境,Integrated Development Environment)一样,将代码的编辑和编译工作一步完成,vim的功能类似于一个记事本,只能够帮助我们进行代码的编写
vim是一个自由软件,可在多种操作系统上使用,包括Unix,Linux,Windows和Mac OS X等。vim具有许多强大的功能,例如多窗口编辑,语法高亮,自动补全,文本对象选择,宏录制,代码调试等。Vim还有许多插件和脚本,可以扩展其功能和自定义其外观。由于Vim的高度可定制性和强大的功能,它在程序员和系统管理员之间非常流行,经常用于编辑配置文件,编写脚本,处理文本等任务
vim很难用,原因之一就是许多对于文本编辑器而言强大的功能需要我们自己进行配置
vim的配置文件名为.vimrc,一般在home目录下,如果home目录下没有,使用 touch .vimrc 命令创建一个
.vimrc在用户的home目录下,代表是用户自己所拥有的,Linux下每一个用户都可以有自己的.vimrc配置文件,.vimrc里面的配置仅对这个用户生效,当你打开vim时,会读取自己.vimrc里的配置信息
当我们对vim没有进行任何配置时,也就是说.vimrc内为空,敲代码的感觉类似下面,难用啊~
使用vim 打开.vimrc文件进行配置
set number 或者 set nu
syntax on
set tabstop=4 // 想设置多少就设置多少
set shiftwidth=4
set expandtab
set autoindent // 与上一行缩进保持一致
vim的配置选项有很多,同时还存在很多插件,本文不一一介绍,可以去网上搜索,但是vim的配置一来比较麻烦,二来在以后开发时不一定使用vim,因此不必过多了解
这里介绍一个一键配置vim的开源项目, VimForCpp
VimForCpp: 快速将vim打造成c++ IDE (gitee.com)https://gitee.com/HGtz2222/VimForCpp?_from=gitee_search根据里面的参考手册可以一键配置好vim,满足日常使用大部分功能
安装好之后vim的配置就算完成了
但是这个项目的Tab缩进是2,如果不满意需要手动改一下
对于已经存在的文件,直接使用vim+文件名打开
对于不存在的文件,直接使用vim+文件名会在当前路径下创建一个新的文件,新文件名就是输入的文件名
vim是一款多模式的编辑器,有三种模式
使用vim需要经常在这三种模式中进行切换,切换的方式为
可以通过观察左下角的 NORMAL INSERT COMMAND 来观察处于何种模式
命令模式 → 插入模式
命令模式 → 底行模式
插入模式或底行模式 → 命令模式
使用vim打开一个文件之后,默认处在命令模式下,这个时候需要切换成插入模式才能进行文本的输入,也就是代码的编写
完成代码的编写后,需要按下 shift + :进行底行模式输入 q 退出,退出时有几种输入
复制
yw: 将光标所在之处到字尾的字符复制到缓冲区中
nyw:复制n个字到缓冲区
yy: 复制光标所在行到缓冲区
nyy: 例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字
p: 将缓冲区内的字符贴到光标所在位置#p: 将缓冲区内的字符复制n次再粘贴到光标所在位置
注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能
yw复制的是单词,从光标所在位置到这个单词的结尾,这里光标一开始在字母i处,yw复制的是printf中 字母 i 及之后的ntf;当使用3yw复制时,可以看到复制的是 intf("hello,其中三个单词分别是intf 、(" 和 Hello
yy复制的是光标所在行,复制一行内容时,光标可以在这行的任意位置
2yy可以一次性复制两行
使用yw或yy复制内容到缓冲区后,按p将缓冲区内容粘贴出来
2p可以一次性粘贴两次
撤销上一次操作
u:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复
ctrl + r:撤销的恢复
先复制,再粘贴,接着把粘贴的操作撤销掉,最后把撤销掉的操作恢复 (yy + p + u + ctrl r)
移动光标
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
按「G」(shift + g):定位光标到文件的最后按「n + shift + g」:定位光标到文件的第n行
按「gg」:定位光标到文件的开头
按「$」(shift + 4):移动到光标所在行的“行尾”
按「^」(shift + 6):移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「nl」:光标移到该行的第n个位置,如:5l,56l
按[shift+g]:进入文本末端
按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页
删除
x: 每按一次,删除光标所在位置的一个字符
nx:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
X: 大写的X,每按一次,删除光标所在位置的“前面”一个字符
nX:例如,「20X」表示删除光标所在位置的“前面”20个字符
dd: 删除光标所在行
ndd:从光标所在行开始删除#行
dd较为常用,这里的操作是(dd + 2dd + p),先删除一行,再删除两行,再按p可将删除的内容粘贴出来,其效果类似于剪切
大小写切换
shitf + ~:可以将字母的大小写切换,一次切换一个字母,一直按住可以连续切换
替换
r:替换光标所在处的字符
nr:替换光标所在处开始的n个字符
R(shift + r):替换光标所到之处的字符,直到按下「ESC」键为止
r一次只能替换一个字符, shift + r之后会进入替换模式(注意左下角),可以连续替换字符
这里的操作是(r e 2r p shift+r eeeee)
多行编辑
Ctrl + v进入可视块模式(visual block mode),移动光标键选择要编辑的区域,再使用修改命令进行编辑
vim中一次性注释多行的操作
在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按 shift + :即可进入末行模式
列出行号
set nu: 输入「set nu」后,会在文件中的每一行前面列出行号
set nonu:取消行号
经过配置的vim不再需要使用这个操作来调出行号
保存文件和离开vim
: w 保存当前文件
: wq 输入「wq」,保存文件并退出vim
: q! 输入q!,不保存文件并强制退出vim
: wq! 强制保存文件并退出vim
多屏操作
vs :对比操作,可以实现两个文件的分屏操作
ctrl + ww:ctrl按住,w快速按两下,可以实现文件间的切换
光标在哪个分屏文件中,此时操作的就是那个文件的内容
vim中执行命令行代码
:!+ cmd 可以不用退出vim,就可以执行命令行应用
可以直接在vim中使用gcc对我们的代码进行编译和运行
也可也直接在vim中使用man手册
查找字符
/关键字: 先按「/」键,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按「n」会往后寻找到关键字为止
?关键字:先按「?」键,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按「n」会往后寻找到关键字为止
这二者的区别是: / 命令用于向前查找文本,而 ? 命令用于向后查找文本
跳到文件中的某一行
: #「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文件的第15行