【Linux基础开发工具(二)】Vim编辑器从入门到实战:模式、命令、配置与常见问题全解析

目录

一、前言

二、Vim编辑器

1.vim和vi的关系

2.vim基本概念

1.三种常用模式

2.模式间的转换

3.命令模式的命令集

1.光标移动类

2.编辑操作类

4.底行模式的命令集

5.vim操作总结

6.补充:

1.视图模式下:批量化注释、去注释

2.实用功能

:!command

[:vs filename](#:vs filename)

:%s/target/src/g

ctrl+ww(命令模式下)

[vim filename +行号](#vim filename +行号)

!命令行首字母

7.常见问题

1.vim异常退出问题

2.怎么把普通用户添加到白名单(可以执行sudo命令)

8.vim配置问题

插件使用

三、小结


一、前言

本篇向大家介绍Linux基础开发工具最重要的一环------vim编辑器。vim 是 Linux 下最经典、最强大的文本编辑器,也是很多程序员和运维人员的首选。它源自 vi,功能更丰富,几乎任何 Linux 系统都能见到它。

附:


二、Vim编辑器

1.vim和vi的关系

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以运⾏于xwindow、 mac os、 windows。所以我们一步到位,直接学习更强大的vim!

2.vim基本概念

1.三种常用模式

我们讲解vim的三种模式(其实有好多模式,⽬前掌握这3种即可),分别是命令模式(command mode)、插⼊模式(Insert mode)和底⾏模式(last line mode),各模式的功能区分如下:

正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或⾏的删除,移动复制某区段及进⼊Insert mode下,或者到 last line mode
插⼊模式(Insert mode)
只有在Insert mode下,才可以做⽂字输⼊,按「ESC」键可回到命令⾏模式。该模式是我们后⾯⽤ 的最频繁的编辑模式。
末⾏模式(last line mode)
⽂件保存或退出,也可以进⾏⽂件替换,找字符串,列出⾏号等操作。
在命令模式下,*shift+:* 即可进⼊该模式。要查看你的所有模式:打开 vim,底⾏模式直接输⼊ :help vim-modes

2.模式间的转换

如上图所示:

进⼊vim,在系统提⽰符号输⼊vim及⽂件名称后,就进⼊vim全屏幕编辑画⾯:
$ vim test.c
不过有⼀点要特别注意,就是你进⼊vim之后,是处于正常模式,你要切换到插⼊模式才能够输⼊⽂字。

正常模式\]切换⾄\[插⼊模式

按「i」切换进⼊插⼊模式「insert mode」,按"i"进⼊插⼊模式后是从光标当前位置开始输⼊
⽂件;
按「a」进⼊插⼊模式后,是从⽬前光标所在位置的下⼀个位置开始输⼊⽂字;
按「o」进⼊插⼊模式后,是插⼊新的⼀⾏,从⾏⾸开始输⼊⽂字。

插⼊模式\]切换⾄\[正常模式

⽬前处于插⼊模式,就只能⼀直输⼊⽂字,如果发现输错了字,想⽤光标键往回移动,将该字删 除,可以先按⼀下「ESC」键转到正常模式再删除⽂字。当然,也可以直接删除。

正常模式\]切换⾄\[末⾏模式

「shift + ;」, 其实就是输⼊「:」
退出vim及保存⽂件,在正常模式下,按⼀下「:」冒号键进⼊「Last line mode」,例如:
: w (保存当前⽂件)
: wq (输⼊「wq」,存盘并退出vim)
: q! (输⼊q!,不存盘强制退出vim)

3.命令模式的命令集

1.光标移动类

上下:
按[gg]:进⼊到⽂本开始 (首行)
按[shift+g]:进⼊⽂本末端(尾行)
按[#+shift+g]:进⼊第 # 行
左右:
按「 $ 」:移动到光标所在⾏的"⾏尾"
按「^」:移动到光标所在⾏的"⾏⾸"
位移动:
vim可以直接⽤键盘上的光标来上下左右移动,但正规的vim是⽤⼩写英⽂字⺟「h」、「j」、 「k」、「l」,分别控制光标左、下、上、右移⼀格, #+h/j/k/l :移动#位光标
以单词为单位移动:
按#+w:光标回到下个单词的开头
按#+b:光标回到上个单词的开头

2.编辑操作类

删除⽂字(在插入模式下也可以直接delete删除)
「x」:每按⼀次,删除光标所在位置的⼀个字符
「#x」:例如,「6x」表⽰删除光标所在位置的"后⾯(包含⾃⼰在内)"6个字符
「dd」:删除光标所在⾏
「#dd」:从光标所在⾏开始删除#⾏
复制、粘贴
「yy」:复制光标所在⾏到缓冲区。
「#yy」:例如,「6yy」表⽰拷⻉从光标所在的该⾏"往下数"6⾏⽂字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须
与"p"配合才能完成复制与粘贴功能。
撤销上⼀次操作
「u」:如果您误执⾏⼀个命令,可以⻢上按下「u」,回到上⼀个操作。按多次"u"可以执⾏
多次回复。
「ctrl + r」: 撤销的恢复
替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为⽌。

博主可能没有给大家写的那么全,但是这些指令足够我们日常使用了,不必担心!

4.底行模式的命令集

在使⽤末⾏模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进⼊末⾏模式。

基础操作

列出⾏号
「set nu」: 输⼊「set nu」后,会在⽂件中的每⼀⾏前⾯列出⾏号。
「set nonu」:取消显示行号。
跳到⽂件中的某⼀⾏
「#」:「#」号表⽰⼀个数字,在冒号后输⼊⼀个数字,再按回⻋键就会跳到该⾏了,如输⼊数字 15,再回⻋,就会跳到⽂章的第15⾏。
查找字符
「/关键字」: 先按「/」键,再输⼊您想寻找的字符,如果第⼀次找的关键字不是您想要的,可以 ⼀直按「n」会往后寻找到您要的关键字为⽌。
「?关键字」:先按「?」键,再输⼊您想寻找的字符,如果第⼀次找的关键字不是您想要的,可以⼀直按「n」会往前寻找到您要的关键字为⽌。
保存⽂件
「w」: 在冒号输⼊字⺟「w」就可以将⽂件保存起来
离开vim
「q」:按「q」就是退出,如果⽆法离开vim,可以在「q」后跟⼀个「!」强制离开vim。
「wq」:⼀般建议离开时,搭配「w」⼀起使⽤,这样在退出的时候还可以保存⽂件。
问题:∕ 和 ?查找有和区别?操作实验⼀下。

操作 /(向下搜索) ?(向上搜索)
搜索方向 向文件末尾 向文件开头
按 n 继续向下找 继续向上找
按 N 反向向上找 反向向下找
典型场景 从开头找后面的内容 从末尾找前面的内容

5.vim操作总结

6.补充:

1.视图模式下:批量化注释、去注释

批量加注释(//)

  1. 把光标移到你要注释的第一行的开头。

  2. 按 Ctrl + v 进入可视块模式。

  3. 按 j(或方向键下)选中你要注释的所有行。

  4. 按大写 I(Shift + i),进入插入模式。

  5. 输入注释符,比如 //。

  6. 按 Esc,稍等一秒钟,选中的所有行首都会自动加上 //。

批量去注释

  1. 光标移到第一行注释符 // 的位置。

  2. 按 Ctrl + v 进入可视块模式。

  3. 按 j 选中所有带 // 的行。

  4. 按 d 或 x,直接删除选中的注释符。

2.实用功能

:!command

作用:在 Vim 中直接执行外部的 Shell 命令。

  • 用法 :在底行模式下输入 :!ls、:!pwd、:!gcc % 等。

  • 原理 :Vim 会挂起自己,把命令交给系统 Shell 执行。执行完后,会提示 Press ENTER or type command to continue,按回车就会回到 Vim。

:vs filename
  • 水平分屏对比 :如果垂直分屏是 :vs,那水平分屏就是 :sp filename(全称 split)。

  • 使用场景:写代码时左边看头文件、右边写实现,或者对照两个文件。

:%s/target/src/g

**功能:**把文件内容里的所有的target替换成src

ctrl+ww(命令模式下)

作用:在 Vim 的多个分屏窗口之间循环切换光标焦点。

  • 归属模式 :这是在普通模式 下按的(先按 Ctrl + w,松开后再按 w),绝对不能在底行模式下输入。

  • 用法:

    1. 你先用 :vs 或 :sp 分屏。

    2. 按 Ctrl + w,再按 w(下文统称 Ctrl+ww),光标会在不同窗口之间跳来跳去。

  • 进阶 :除了 w 循环切换,你还可以按 Ctrl + w 后接方向键:

    • Ctrl + w + h:切换到左边窗口

    • Ctrl + w + j:切换到下边窗口

    • Ctrl + w + k:切换到上边窗口

    • Ctrl + w + l:切换到右边窗口

vim filename +行号

功能:启动vim时光标定位到指定行,常用于编译file出现报错时进行快速定位修改。

!命令行首字母

功能:匹配到最近一次以指定字母开头的命令,简化高频命令,提高效率。

7.常见问题

1.vim异常退出问题

场景:你编写了几百行代码,由于网络问题Xshell和服务器断开连接,写的那么多代码没有来得及保存自动退出了,该怎么恢复代码?

我们每次启动vim时,系统会自动生成一个隐藏文件实时保存我们编写的代码,正常保存退出时该文件自动删除,若异常退出,可通过该文件恢复代码(code.c.swp)。

2.怎么把普通用户添加到白名单(可以执行sudo命令)

步骤:在root账号下,vim /etc/sudoers 下翻添加用户,wq!强制保存退出。

8.vim配置问题

把vim的配置项写入到当前用户的/home/xxx/.vimrc里。

配置⽂件的位置
在⽬录 /etc/ 下⾯,有个名为vimrc的⽂件,这是系统中公共的vim配置⽂件,对所有⽤⼾都有
效。
⽽在每个⽤⼾的主⽬录下,都可以⾃⼰建⽴私有的配置⽂件,命名为:".vimrc"。例如,/root
⽬录下,通常已经存在⼀个.vimrc⽂件,如果不存在,则创建之。
切换⽤⼾成为⾃⼰执⾏ su ,进⼊⾃⼰的主⼯作⽬录,执⾏ cd ~
打开⾃⼰⽬录下的.vimrc⽂件,执⾏ vim .vimrc

插件使用

在gitee上搜vimforcpp,直接在命令行粘贴配置行,自动下载安装插件,给大家贴在下面了:

https://gitee.com/HGtz2222/VimForCpp


三、小结

本文系统介绍了Linux下最经典的文本编辑器Vim。从vi与vim的关系讲起,明确了vim是vi的升级版,兼容所有指令且支持语法高亮和可视化操作。重点拆解了Vim的三种核心模式:命令模式、插入模式、底行模式,并给出了模式间的切换方法和常用命令集,包括光标移动、删除复制、撤销替换等编辑操作,以及底行模式下的行号显示、查找替换、保存退出等。针对/和?的查找方向区别做了实验对比,并补充了批量注释去注释、分屏、执行外部命令等实用技巧。最后,针对异常退出恢复、普通用户sudo白名单、vim配置文件及插件安装等常见问题给出了解决方案。掌握这些内容,足以应对日常开发中的绝大多数文本编辑场景。建议多动手练习,把命令变成肌肉记忆。如果觉得有帮助,欢迎点赞收藏,一起在Linux的世界里进阶!

相关推荐
꯭自꯭闭꯭1 小时前
达梦DMDSC主备搭建
linux·服务器·数据库
墨家句子2 小时前
AnythingLLM 搭本地知识库:文档问答不准怎么调
linux·后端
高山有多高2 小时前
【Linux笔记】冯诺依曼体系结构
linux·运维·笔记
筑梦之路2 小时前
Alibaba Cloud Linux 4 IPXE全自动安装(直连官方源)——筑梦之路
linux·运维·服务器·国产化·阿里云操作系统
encoderlee2 小时前
ubuntu server 如何播放视频显示网页
linux·ubuntu·音视频·树莓派·ubuntu server·arm嵌入式
云计算练习生3 小时前
什么是 Linux?从 Unix 到开源生态的完整脉络
linux·开源·操作系统·unix
Pointer Pursuit3 小时前
make / Makefile
linux·运维·服务器
ZhangJun953 小时前
Linux常用命令笔记,中高级运维高频指令,并附上vim常见操作
linux·运维·centos·云计算·vim
逐流人3 小时前
Ceph对象存储与文件系统存储管理:从RADOS网关、S3与Swift到CephFS快照同步
linux·运维·ceph·云原生·云计算·swift·rados