Vim 多模式详解:命令、插入、底行与插件配置

文章目录

  • [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的配置)

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一个用于在终端下写代码的工具,其有以下两个特点:

  1. 快速调用
  2. 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 光标移动

  1. 上下左右
    h:左
    j:下
    k:上
    l:右

为什么不用方向键?

  1. 这几个键就在我们右手的手底下方便
  2. 其次就是早些时候的键盘没有方向键,后续的发展要兼容前面使用者的习惯,所以hjkl的移动就被保留了下来
  1. 光标移动
    最前最后:
    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 文字修改

  1. 修改文字
    shift+\`=\~:大小写快速转化
  2. 删除文字
    x:删除光标所在字符,向右删除n+x向右删除n个字符
    shift+x=X:删除光标所在字符,向左删除n+shift+x向左删除n个字符
    dd:删除当前行n+dd:删除从当前行开始的n行
  3. 替换文字
    r:局部单词替换模式,替换光标所在位置的一个字符n+r替换光标所在位置的n个字符
    shift+r=R:进入替换模式,批量化替换内容
  4. 撤销修改
    u:撤销操作
    ctrl+r:对u的撤销进行撤销

只要你没有退出vim你都可以退出的,一旦退出了就没有办法撤销退出前的操作了k

2.2.3 复制

yw:复制光标所处字到该行末尾的所有字符

#yw:复制#个字

p:将刚刚复制的内容粘贴n+p粘贴多少次

yy:复制当前行n+yy复制从当前行开始的多少行

2.2.4 批量化注释和批量化去注释

批量化注释:

  1. ctrl+v进入VISUAL BLOCK模式
  2. hjkl选择区域
  3. shift+i=I

  4. //

  5. Esc

批量化去注释:

  1. ctrl+v进入VISUAL BLOCK模式
  2. hjkl选择区域
  3. d

  4. 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配置文件的位置

  1. 在目录/etc/下面,有个名为.vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  2. 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:".vimrc"。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则自己创建。
  3. 切换用户成为自己执行su ,进入自己的主工作目录,执行cd \~
  4. vim打开自己目录下的.vimrc文件,执行
  5. 对vim做基本配置

配置的本质就是把配置项写进/home/XX/.vimrc

3.2 使用插件

为了不污染 Vim 的系统文件,建议将插件安装在一个隐藏目录 下(例如 ~/.vim/plugged),便于统一管理和清理。

需要注意的是,Vim 的配置文件(.vimrc)及其插件安装仅对当前用户生效 ,不会影响系统其他用户。每个用户在各自的家目录下都可以独立配置自己的 Vim 环境。

而系统级的配置文件(如 /etc/vim/vimrc)对所有用户有效,修改它需要 root 权限 ,一般不建议普通用户去动,除非你确实需要为所有用户统一配置。

简单来说:自己的 Vim 自己配,不建议动系统级配置。如果你有 root 权限,改动 /etc/vim/vimrc 会影响所有用户,操作前建议先备份。普通用户通过修改 ~/.vimrc即可实现个性化配置,无需使用 root 权限。


欢迎大家批评指正!!!

相关推荐
律宏阔4 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔4 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴4 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千4 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei374 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei374 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei375 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW5 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
GeW5 小时前
工业场景中的Linux与数据库选型:高端化转型的技术底座
linux
yunwei375 小时前
eBPF 开发者教程: 简单的 XDP 负载均衡器
linux·后端·性能优化