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 权限。


欢迎大家批评指正!!!

相关推荐
想你依然心痛3 小时前
Linux用户空间与内核空间通信:netlink、ioctl、mmap 零拷贝与性能对比
linux·运维·服务器
做个文艺程序员4 小时前
Linux第12篇:性能监控与瓶颈分析——CPU/内存/IO/网络全维度
linux·运维·网络
HAPPY酷5 小时前
【ROS2】 Conda 环境搭建(命令行版)
linux·运维·python·ubuntu·机器人·conda
hai3152475436 小时前
九章空间几何对照直译法:通用芯片 / 定制专用芯片 编译适配规则
linux·汇编·bash
ton_tom6 小时前
设备驱动程序编程-Linux2.6.10-kdb安装-32位
linux·运维·服务器
dddwjzx7 小时前
嵌入式Linux C应用编程入门——进程 ( 二 )
linux·嵌入式
司南-70498 小时前
claude - windows | linux 国内镜像安装
linux·运维·服务器
jieyucx8 小时前
【系统安全铁律】解密 Linux 权限三色数字密码:chmod 最小化赋权与生产环境避坑指南
linux·安全·系统安全·权限·chmod·777
AOwhisky9 小时前
Linux(CentOS)系统管理入门笔记(第四期)——文件系统(下篇):文件与目录操作实战——cpmvmkdirrmln
linux·运维·笔记·centos·云计算·文件系统