文章目录
- [1 编辑器vim](#1 编辑器vim)
-
- [1.1 vi和vim的区别](#1.1 vi和vim的区别)
- [1.2 vim的基本概念](#1.2 vim的基本概念)
- 2.vim的多模式介绍
-
- [2.1 vim的基本操作](#2.1 vim的基本操作)
- [2.2 命令模式](#2.2 命令模式)
-
- [2.2.1 光标移动](#2.2.1 光标移动)
- [2.2.2 文字修改](#2.2.2 文字修改)
- [2.2.3 复制](#2.2.3 复制)
- [2.2.4 批量化注释和批量化去注释](#2.2.4 批量化注释和批量化去注释)
- [2.3 底行模式](#2.3 底行模式)
-
- [2.3.1 权限问题](#2.3.1 权限问题)
- [2.3.2 查找字符](#2.3.2 查找字符)
- [2.3.3 命令执行](#2.3.3 命令执行)
- [2.3.4 保存退出](#2.3.4 保存退出)
- [3. vim的配置](#3. vim的配置)
-
- 3.1配置文件的位置
- [3.2 使用插件](#3.2 使用插件)

1 编辑器vim
平时我们使用的既可以编写代码,又可以编译代码,又可以调试代码的这种一体化平台就是我们所说的IDE(集成式开发软件)。
但是在Linux平台下开发工具是独立出现的:
写代码--编辑器vim
编译代码--gcc/g++
调试--gdb
构建工具--makefile、make、cmake
代码托管--git
今天我们来介绍一下Linux平台下的代码编辑器vim:
1.1 vi和vim的区别
vi/vim都是多模态编辑器,但是vim是vi的升级版,vim不仅兼容vi的所有指令,而且还有一些新的特性在里面:语法加亮等,其可视化操作不仅可以在终端运行,也可以运行在windows,mac os上。
1.2 vim的基本概念
vim一个用于在终端下写代码的工具,其有以下两个特点:
- 快速调用
- vim多模式
vim有三种基本模式:
命令模式:(正常/普通模式)控制屏幕光标的移动,字符,字,或者行的删除,,移动复制某区段及进入Insert mode下,或者到last line mode
插入模式(insert mode):也就是编辑模式,只有在该模式下才能进行文字的输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
底行模式:
命令模式:文件的保存或者退出,文件的替换,找字符串,列出行号等操作。
在命令模式下,shift+:即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入 :
bash
help vim-modes

在windows下,我们常用按各种选项abcde都会在屏幕上正常显示,但是为什么同时按ctrl+c或者ctrl+v就会复制粘贴呢?
我们知道这是快捷方式也就是我们说的快捷键:快捷方式的本质是命令,可以增加编辑的效率,命令越多,效率越高。
同时命令的背后是自动化和批量化,vim的多模式就围绕着命令展开的。
2.vim的多模式介绍
2.1 vim的基本操作
bash
vim text.c
vim全屏编辑画面,默认处于正常模式该模式下正常是不允许写代码的,我们要切换到插入模式下才能写输入文字
正常模式->插入模式:输入a\i\o都可以
插入模式->正常模式:目前处于插入模式,就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到正常模式再删除文字。当然,也可以直接删除。
正常模式->底行模式:shift+;(其实也就是输入:)
下面,我们逐一介绍各个模式的命令集:
2.2 命令模式
正常模式也就是我们vim进入后的默认模式
2.2.1 光标移动
- 上下左右
h:左
j:下
k:上
l:右
为什么不用方向键?
- 这几个键就在我们右手的手底下方便
- 其次就是早些时候的键盘没有方向键,后续的发展要兼容前面使用者的习惯,所以hjkl的移动就被保留了下来
- 光标移动
最前最后:
shift+g=G:将光标移动到文本结尾n+shift+g定位到任意一行
gg:回到文本的最开始
基于锚点:
shift+4=$:将光标从第一列挪到最后一列,定位到当前行结尾
shift+6=\^:定位到当前行的开始
按照单词为单位移动:
w:按照单词为单位向右移动n+w可以指定单位
b:按照单词为单位向左移动n+b可以指定单位
#l:将光标移动到n个位置(#代表一个整数n)
ctrl+b:屏幕向后移动一页
ctrl+f:屏幕向前移动一页
ctrl+u:屏幕向后移动半页
ctrl+d:屏幕向前移动半页
当vim退出,光标在第n行,那么再次打开,光标还在原来的位置
vim text.c +9//这样可以指定打开该文件时光标在第9行
2.2.2 文字修改
- 修改文字
shift+\`=\~:大小写快速转化 - 删除文字
x:删除光标所在字符,向右删除n+x向右删除n个字符
shift+x=X:删除光标所在字符,向左删除n+shift+x向左删除n个字符
dd:删除当前行n+dd:删除从当前行开始的n行 - 替换文字
r:局部单词替换模式,替换光标所在位置的一个字符n+r替换光标所在位置的n个字符
shift+r=R:进入替换模式,批量化替换内容 - 撤销修改
u:撤销操作
ctrl+r:对u的撤销进行撤销
只要你没有退出vim你都可以退出的,一旦退出了就没有办法撤销退出前的操作了k
2.2.3 复制
yw:复制光标所处字到该行末尾的所有字符
#yw:复制#个字
p:将刚刚复制的内容粘贴n+p粘贴多少次
yy:复制当前行n+yy复制从当前行开始的多少行
2.2.4 批量化注释和批量化去注释
批量化注释:
- ctrl+v进入VISUAL BLOCK模式
- hjkl选择区域
-
shift+i=I
-
//
- Esc
批量化去注释:
- ctrl+v进入VISUAL BLOCK模式
- hjkl选择区域
-
d
- Esc
批量化添加以及减少数据
2.3 底行模式
在使用底行模式之前,需要确保处于正常模式,在shift+;即可进入该模式:
2.3.1 权限问题
如果你没有读权限,(这个时候你打开代码都是空的),如果你没有写权限(需要这个文件是你的):
w!:【强制】保存
q!:【强制】退出
wq!:【强制】强制保存并退出(通常用于只读文件)
补充一点:
如果vim打开文件,突然从终端退出,vim会形成临时文件,ls -al默认在当前路径下一个以.swp结尾的文件,将临时文件.swp删掉就可以正常打开了。
非正常退出会出现如下界面,需要在下面的选项中选择:

有了这个零时文件,每次你进去都会问你一下,就很烦。如果不想这样将对应的临时文件删掉就可以了:

2.3.2 查找字符
/:自动搜索,第一次不是按n向后查找
/key+n:匹配搜索
?:自动搜索,第一次不是按n向前查找
2.3.3 命令执行
!ls:执行shell命令,不退出vim可以执行gcc按任意键继续,可以将ls换成pwd等指令
%s/dst//g:批量化全局替换:
%:范围修饰符号
s:替换命令
dst:你想要替换或者删除的内容
//:替换成的内容为空(两个斜杠中间为空,有需要替换的内容就写在两个斜杠中间)
g:全局替换(global),即每一行中所有匹配的地方都被替换
vs +text.c:vim本身就有创建文件的功能,创建text.c文件并分屏
ctrl +ww:选择屏幕
shift+zz:保存并退出vim
2.3.4 保存退出
q:退出如果不行加!强制性退出
wq:保存文件并退出
3. vim的配置
3.1配置文件的位置
- 在目录/etc/下面,有个名为.vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
- 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:".vimrc"。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则自己创建。
- 切换用户成为自己执行su ,进入自己的主工作目录,执行cd \~
- vim打开自己目录下的.vimrc文件,执行
- 对vim做基本配置
配置的本质就是把配置项写进/home/XX/.vimrc
3.2 使用插件
为了不污染 Vim 的系统文件,建议将插件安装在一个隐藏目录 下(例如 ~/.vim/plugged),便于统一管理和清理。
需要注意的是,Vim 的配置文件(.vimrc)及其插件安装仅对当前用户生效 ,不会影响系统其他用户。每个用户在各自的家目录下都可以独立配置自己的 Vim 环境。
而系统级的配置文件(如 /etc/vim/vimrc)对所有用户有效,修改它需要 root 权限 ,一般不建议普通用户去动,除非你确实需要为所有用户统一配置。
简单来说:自己的 Vim 自己配,不建议动系统级配置。如果你有 root 权限,改动 /etc/vim/vimrc 会影响所有用户,操作前建议先备份。普通用户通过修改 ~/.vimrc即可实现个性化配置,无需使用 root 权限。
欢迎大家批评指正!!!