文章目录
前言
一、Linux开发工具
二、vim的基本概念
三、vim的基本操作
四、vim正常模式命令集
1.进入/退出插入模式
2.移动光标
3.删除文字
4.复制粘贴
5.替换
6.撤销与恢复
7.更改
8.跳转
9.批量注释与删除
五、vim底行模式命令集
☘️1.温馨提示
☘️2.列出与取消行号
☘️3.跳转
☘️4.查找
☘️5.替换字符
☘️6.分屏操作
☘️7.不退出vim执行其他命令
☘️8.保存退出
六、vim操作总结
七、简单vim配置
1.简单介绍
2.配置原理
3.快速配置vim的安装包
八、vim高清键盘图
1.英文版
2.中文版
总结
大家好啊,我是不一样的烟火a,今天我将为大家讲解一下Linux中不得不掌握的开发工具 —— vim。文章将会为大家详细讲解vim中常用的命令,相信看完的小伙伴都能快速掌握vim的使用,由于vim的命令比较多,所以建议大家收藏反复观看。那么废话不多说,开始我们今天的内容。
小故事:
在开始讲之前,先给大家讲个故事。从前有个人叫张三,他是刚接触计算机不久的一个小白,他平时写C/C++代码都是在vs2019这个软件上写的。一天,他的学长问他,张三啊,你平时写C/C++代码一般都是在什么环境下写的啊,张三毫不犹豫的回答说是vs2019;学长又问他,那你调试代码一般用的什么工具呢?张三想了想说,不就是vs2019吗;于是学长又问,那你一般编译代码用什么工具呢?张三这时心里想,这学长脑子不是被门夹了吧,这不还是vs2019吗;当学长又问,那你编译链接用的......,学长这时话还没说完,张三就抢先说vs2019,并告诉学长说都是vs2019,别再问了,于是张三用看傻子的目光送走了学长。(但是张三殊不知,学长这时也把张三当傻子在看了)
其实像vs2019这样的程序被叫做集成开发环境。
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
虽然集成开发环境能让我们用起来更舒服,但是它给我们带来好处的同时也带来了很多问题,比如我们下载安装的时候特别慢,有可能我们下载的一些组件到我们电脑报废了都没用过一次。所以Linux下就是把这些工具都裁开,一个工具只负责一个功能。所以在Linux下编写代码就用vim,编译代码就用gcc/g++,调试代码就用gdb,运行或者自动化构建程序就用make和makefile。(这些软件我后面的文章里面都会一一讲解,今天主要讲解编写代码的工具——vim)
简单介绍:vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
强调:vim是一个编辑器,意思就是说vim只能写代码,其他的什么都干不了。所以vim工具的功能重点就是如何让我们能更快更好的写出代码。至于这个代码在编译时能否通过,就跟vim没有任何关系了。
vim下最重要的三种模式:
- 正常/普通/命令模式(Normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
- 插入模式(Insert mode):只有在Insert mode下,才可以做文字输入,按 [ESC ] 键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
- 底行模式(last line mode):文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift + " : " 即可进入该模式。如果要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes
查看vim所有的模式:
先输入命令进入vim。
命令:vim
如果你出现跟我一样的界面,那么就说明,你的Linux下是存在vim的,vim一般都会被默认安装。
我们在底行模式下输入下面指令。
命令:help vim-modes
在这里就可以查看所有的模式了。后面我会教大家如何退出vim,这里先不急。
进入vim:在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面。
命令:vim [文件名]
提示:如果要用vim进入的文件不存在的话,vim会自动帮你创建这个文件。
进入vim后就是这样的界面。不过有一点要特别注意,就是你进入vim之后,是处于 [正常模式],你要切换到 [插入模式] 才能够输入文字。
[正常模式] 切换至 [插入模式]:
- 输入a
- 输入i
- 输入o
- 按下这几个字母中任意一个就可以进入 [插入模式]。
我们按下i后就进入了[插入模式]。
在插入模式下我们就可以写代码了。
[插入模式] 切换至 [正常模式]:
- 目前处于 [插入模式],就只能一直输入或者删除文字,如果想要转到[正常模式],只用按一下 [ ESC ] 键即可。
[正常模式] 切换至 [底行模式]:
- [shift + ;], 其实就是输入 [:]
退出vim并保存文件,在 [正常模式] 下,按一下 [:] 冒号键进入 [Last line mode] ,输入:
- : w (保存当前文件)
- :q(退出当前文件)
- :wq (输入 [wq] ,存盘并退出vim)
- :q! (输入q!,不存盘强制退出vim)
- 这里的!表示强制的意思,如果是w!,就表示强制保存。
我们这里输入 :wq 回车一下,保存并退出文件。
我们用cat命令打印出文件内容,证明保存成功。(并且,vim自动为我们创建了这个文件)
提示:进入vim,默认处于正常模式。
插入模式:
- 按 [ i ] 切换进入插入模式 [ insert mode ],按“i”进入插入模式后是从光标当前位置开始输入文件。
- 按 [ a ] 进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字。
- 按 [ o ] 进入插入模式后,是插入新的一行,从行首开始输入文字。
从插入模式切换为命令模式:
- 按 [ ESC ] 键。
移动光标:
- vim 可以直接用键盘来上下左右移动,但是正规的 vim 是用小写英文字母 [ h ]、[ j ]、[ k ]、 [ l ],分别控制光标左、下、上、右移一格。但是要注意,只有在普通模式下才可以通过字母来移动光标哦。(这里提供一个记忆方法, [ h ]、[ j ]、[ k ]、 [ l ] 这四个字母是顺序排列在一行的,[ h ]是最左边的那个字母,所以就对应左移;[ l ]是最右边的那个字母,所以就对应右移;[ j ]可以看成单词jump(跳)的首字母,而跳是往下跳,所以就对应下移;[ k ]可以看成单词king(国王)的首字母,而国王是高高在上的,所以就对应上移)
- 按 [ G ]:移动到文章的最后。
- 按 [ $ ]:移动到光标所在行的“行尾”。
- 按「^」:移动到光标所在行的“行首”。
- 按「w」:光标跳到下个字的开头。
- 按「e」:光标跳到下个字的字尾。
- 按「b」:光标回到上个字的开头。
- 按「#l」:光标移到该行的第#个位置,如:5l
- 按[gg]:进入到文本开始。
- 按[shift+g]:进入文本末端。
- 按 [ ctrl ] + [ b ] :屏幕往“后”移动一页。
- 按 [ ctrl ] + [ f ] :屏幕往“前”移动一页。
- 按 [ ctrl ] + [ u ] :屏幕往“后”移动半页。
- 按 [ ctrl ] + [ d ] :屏幕往“前”移动半页。
- 提示:一定要看清是大写还是小写字母哦。
删除文字 :
- [ x ]:每按一次,删除光标所在位置的一个字符。
- [ #x ]:例如,[ 6x ] 表示删除光标所在位置的“后面(包含自己在内)”6个字符。
- [ X ]:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
- [ #X ]:例如,[ 20X ] 表示删除光标所在位置的“前面”20个字符。
- [ dd ]:删除光标所在行。
- [ #dd ]:从光标所在行开始删除#行。
复制:
- [ yw ]:将光标所在之处到字尾的字符复制到缓冲区中。
举例:
我在这个位置按下yw,就可以复制printf这个字了。
然后我们粘贴,就把我们复制的printf粘贴出来了。
- [ #yw ]:复制#个字到缓冲区。
举例:
我们在这个位置按下2yw,就可以复制 hello 和 vim 这2个字了。
然后粘贴。
- [ yy ]:复制光标所在行到缓冲区。
- [ #yy ]:例如,[ 6yy ] 表示拷贝从光标所在的该行“往下数”6行文字。
- [ p ]:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
- [ #p ]:例如,[ 100p ] 表示将缓冲区内的所有内容粘贴100次到光标位置。
替换:
- [ r ]:替换光标所在处的字符。
举例:
我们在光标这个位置先按下r,再按下w,就可以把字符p替换成字符w。
替换完成。
- [ R ]:替换光标所到之处的字符,直到按下 [ ESC ] 键为止。(按下 [ R ] 进入替换模式,只要不退出就可以一直替换,按下 [ ESC ] 退出替换模式)
举例:
我们这个位置按下 [ R ] 就可以开始替换。
进入替换模式。
替换完成,按下 [ ESC ] 返回普通模式。
- [ shift + ~ ]:大小写相互转换,将光标位置当前的字母进行大小写转换,可以快速的转换大小写字母。
撤销上一次操作:
- [ u ]:如果您误执行一个命令,可以马上按下 [ u ],回到上一个操作。按多次“u”可以执行多次恢复。
- [ ctrl + r ]: 撤销恢复。
注意:如果保存退出vim后,下次再进来就撤销不了上次的操作了,只能撤销当前进入vim的所有操作。
更改:
- [ cw ]:更改光标所在处的字到字尾处。
举例:
在此处按下 [ cw ],vim就会把当前字删除,并且进入插入模式。
删除当前字,进入插入模式。
- [ c#w ]:例如,[ c2w ] 表示更改2个字。
举例:
在此处按下 [ c2w ],vim就会删除2个字(包括当前字),并且进入插入模式。
删除2个字,进入插入模式。
跳至指定的行:
[ #G ]:例如,[ 15G ],表示移动光标至文章的第15行行首。
如何批量注释:
Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号,如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。
举例:
先Ctrl + v 进入块选择模式。
移动光标选择要注释的行。
按下大写的i进入行首插入模式。
输入注释符号。
按下两下ESC。
取消注释:
Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC 保存退出。
Ctrl + v 进入块选择模式。
选中你要删除的行首的注释符号。
按 d 删除注释。
提示:在使用底行模式之前,请记住先按 [ ESC ] 键确定您已经处于正常模式,再按 [ : ]冒号即可进入底行模式。
列出行号:
- [ set nu ]:输入 [ set nu ] 后,会在文件中的每一行前面列出行号。
举例:
在底行输入 [ set nu ] 后,按下回车即可设置行号。
取消行号:
- [ set nonu ]:输入 [ set nonu ] 后,将会取消设置的行号。
举例:
在底行输入 [ set nonu ] 后,按下回车即可取消设置的行号。
跳到文件中的某一行:
- [ # ]:[ # ] 号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字12, 再回车,就会跳到文章的第12行。
举例:
光标初始位置在第三行。
我们在底行输入12,即可将光标跳转到12行。
查找字符:
- [ /关键字 ]:先按 [ / ] 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 [ n ] 会往后寻找到您要的关键字为止。
- [ ?关键字 ]:先按 [ ? ] 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按 [ n ] 会往前寻找到您要的关键字为止。
替换字符:
格式:[ range ] [ s ] [ / ] [ pattern ] [ / ] [ string ] [ / ] [flags] [count]
解释:
- [range] 表示区间,% 用于表示全文;2,3 表示从第2行开始到第3行。
- [ s ] 表示substitute,也就是替换的意思。
- [ / ] 表示分隔符。
- [ pattern ] 表示字符串匹配规则,要匹配什么样的字符串 , 比如^a 表示以a字符起始的字符串。
- [ string ] 表示要将匹配到的字符串替换为的新的string字符串。
- [flags] s_flags中,g比较常用,通常使用g表示全部替换,默认如果不给的话,表示只替换一次。
- [count] 表示在一行中匹配多少次,很少会用到....
- 如果想要将文件中所有 Hello 替换为 abcdef 则命令为: %s/Hello/abcdef/g
举例:
初始状态。
将文件中第11行~12行的所有 Hello 替换为 abcdef。
如果想要将文件中所有 Hello 替换为 abcdef。则用%即可表示全文范围。
命令:%s/Hello/abcdef/g
分屏操作:
- [ vs ] [ 文件名 ]:在底行模式下输入[ vs ] [ 文件名 ],就可以实现分屏操作了。
- 分屏后光标在哪个文件,就进行对哪个文件的操作
- 分屏后进入底行,光标在哪个文件,就处于哪个文件的底行。
- 如何切换屏幕(文件):[ctrl + 按2下w]
举例:
底行输入要添加的文件。
实现分屏,如果file.c文件不存在,vim将会自动创建这个文件。
[ctrl + 按2下w] 切换文件。
还可以用 [#yy] 复制test.c文件的内容,然后切换文件,用 [p] 复制到file,c文件上。
想要退出哪个文件就在哪个文件的底行输入 [wq] 即可保存退出。
不退出vim执行其他命令:
- [! + 对应命令]:可以不用退出vim就执行其他命令。
- 按回车,即可快速重新回到vim。
- 常见情形:执行命令行命令、编译、运行、查看man等。
- 注意:这里的 [ ! ] 与强制符号 [ ! ] 不一样,这里的 [ ! ] 是放在命令首位,而强制符号是放在命令末尾。
举例:
查看man手册。
按q退出man手册。
按下回车快速返回vim。
不退出vim,编译当前代码。
不退出vim,用ls查看当前目录下的文件。
发现当前目录下存在,刚才编译好的可执行文件。
不退出vim,运行编译好的可执行文件。
成功运行。
按下回车,快速返回vim。
[底行模式] 切换至 [正常模式]:
- 按2下ESC。
- 或者删除 [ : ] 冒号。
- 执行完一条命令后自动返回正常模式。
保存文件:
- [ w ]: 在冒号输入字母 [ w ] 就可以将文件保存起来。
离开vim:
- [ q ]:按 [ q ] 就是退出,如果无法离开vim,可以在 [ q ] 后跟一个 [ ! ] 强制离开vim。
- [ wq ]:一般建议离开时,[ q ] 搭配 [ w ] 一起使用,这样在退出的时候还可以保存文件。
最主要的三种模式
- 正常模式
- 插入模式
- 底行模式
- 一共有12种总模式,其他模式大家可以自信查阅,因为用得不多,这里就不过多讲述。
简略汇总图:
温馨提示:
vim的操作太多,我们是不可能完全记住,想要记住的话,只有我们每天不断的用vim,才能更好的让我们熟悉vim的操作。
其实我们上面讲的这些都是在没有配置的vim下讲的,细心的小伙伴一定会发现,其实在这样的vim跟在记事本上写代码没有多大区别,既没有自动对齐,也没有自动补全功能。如果你想要让你的vim拥有这些功能,就必须给vim配置一下。
配置的时候我们需要在自己的用户家目录下创建一个 " .vimrc " 文件。
进入用户家目录命令:
命令:cd ~
一般没有配置过vim的用户,家目录下都没有 " .vimrc " 这个文件。所以需要我们自己创建一个。
配置原理就是:当我们打开vim的时候,vim就会自动读取你配置的这个 " .vimrc " 这个文件,然后就可以实现你想要的效果了。
在我们配置之前先看看我们vim原始的效果。
下面我们开始配置我们的vim。
这是我提供给大家的一些简单的配置,需要哪个就把该命令复制到你的 " .vimrc " 文件,然后保存即可。(如果需要更多的配置命令,大家可以在网上搜索一下)
syntax on "高亮代码" set nu "显示行号" set relativenumber "以当前行号为基准显示行号" set cursorline "在当前光标位置显示一条线 set tabstop=4 "tab长度设置为4" ""set softtabstop=4 set shiftwidth=4 "设置缩进空格数为4" set autoindent "设置自动缩进,每行缩进值与上一行相等" set nobackup "覆盖文件时不备份" set cursorline "突出显示当前行" set ruler "在右下角显示光标位置的状态行" set autoindent "自动缩进" set noexpandtab " 不要用空格代替制表符 set hlsearch "搜索逐字符高亮 set foldmethod=marker "代码折叠 set cmdheight " 命令行(在状态行下)的高度,默认为1,这里是2 set mouse=a " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) set showmatch " 高亮显示匹配的括号 set enc=utf-8 "编码设置 set langmenu=zh_CN.UTF-8 "语言设置 set helpheight=15 "帮助的行高 set helplang=cn "帮助语言 set fillchars=vert:\ ,stl:\ ,stlnc:\ " 在被分割的窗口间显示空白,便于阅读 set showmatch " 高亮显示匹配的括号 set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离 set smartindent " 为C程序提供自动缩进
我们这里先来配置一下行号。
配置完后,从新进入vim,就可以自动显示行号了。
如果还想配置其他的功能,只用把需要的功能对应的命令复制粘贴到你的 " .vimrc " 文件上,然后保存即可。这里就不过多讲解了。
如果你还想要让自己vim功能更加的强大,那么还需要再创建一个 " .vim " 目录,用于存放各种的插件。你可以在网上把你想要的插件下下来,然后放进 " .vim " 目录,就可以拥有对应的功能了。
虽然上面讲了vim配置的原理,也讲了该如何配置。但是如果自己去配置的话始终还是太麻烦了,自己需要的功能对应的命令还要一个一个的复制粘贴过来;如果你还要下插件的话,有可能你自己在网上找的插件下下来后,你自己都找不到它在哪。以至于让自己在配置vim上花费很多时间。
于是,我为了帮助大家节省时间,不想让大家花费太多的时间用在vim配置上,于是我花了3天3夜的时间在gitee上面帮大家找到了一个十分美观简洁,且方便好用的vim配置安装包(支持显示行号、自动补全、自动对齐等常用功能)
配置前的效果:
配置后的效果:
如何安装:
在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行)
命令:curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注意:此安装包目前只支持 Centos7 x86_64,不支持Ubuntu。
举例:
复制上面的命令,粘贴到命令行,然后按回车,最后输入你的root密码后即可开始安装。
正在安装中。
安装完成。
安装完成后,执行以下命令后,配置就可以生效了。
命令;source ~/.bashrc
安装完后,用户家目录下就会多出这几个文件和目录。 其中install.sh是使用这些功能需要的脚本,不想用的时候删去即可。
如何卸载:
在安装了 VimForCpp 的用户执行以下命令即可卸载。
命令:bash ~/.VimForCpp/uninstall.sh
额外补充:
这个安装包里面vim的配置,默认是将缩进设置为2的,如果觉得用起来不习惯可以自己改成4。
下面为步骤:
还是在家目录下进入" .vimrc " 这个文件,安装包里面自己就会帮你创建。
找到第50行,将这三行的2都改成4即可。
更改完后保存退出即可。
安装包来源:VimForCpp: 快速将vim打造成c++ IDE (gitee.com)
安装包里面的详细内容和所有功能可以在这里查看。
总结:
- vim的具体配置我们不关心,因为比较麻烦。
- 但是我们需要一个不错的配置,所以需要稍微了解一下vim配置的原理。
- 一般在配置的时候,是你自己配置你自己的,在当前用户下配置完成后,只有在当前用户下能起作用,对其他用户是没有影响的。但是强烈建议不要在root用户下配置,因为如果在普通用户下配置错了,我们可以直接把普通用户删掉即可;但是如果在root下配置错了后,就会很麻烦了。
到这里我们vim的讲解就结束了,相信大家都能够看懂,希望大家在学习vim的期间里一定要多使用vim,这样才能更快的让自己掌握vim的使用。如果大家有什么解决不了的问题,欢迎大家评论区留言或者私信告诉我。如果感觉对自己有用的话,可以点个赞或关注鼓励一下博主,我会越做越好的,感谢各位的支持。