Linux - 文本编辑器 - vim

一. 初探 vim

vim 的发展史

vim 是从 vi 发展出来的一款多模式文本编辑器. 具有代码补全, 编译及错误跳转等方便编程的功能, 被程序员所广泛使用, 和 Emacs 并列成为类 Unix 系统用户最喜欢的文本编辑器.

对于 vim 这款编辑器来说, 它不同于其他编辑器的地方在于, 你可以仅使用键盘中的主键盘区, 就可以完成绝大多数的操作. 当你进入 vim 后, 默认为命令模式, 主键盘上的所有按键就被赋予了各种功能, 本文也会介绍绝大多数的功能按键.

IDE 和编辑器

VS2022 叫做 IDE [Integrated Development Environment] , 是一个集成开发环境 , 用这一个软件可以完成在开发过程中 编辑代码-->调试代码-->编译, 链接, 运行代码 这些功能.

而 vim 只是一个文本编辑器, 只有编辑代码的功能.

在 Linux 下, 三个工具完成三个不同的功能.

· vim 负责代码的编辑和维护

· gdb 负责代码的调试

· gcc/g++ 负责代码的编译

vim 中的五种常见模式

1. 正常/普通/命令模式 (Normal mode)

控制屏幕光标的移动, 字符, 单词或行的删除, 移动复制某区段及进入 插入模式 下,或者进入 末行模式 下.

2. 插入模式 (Insert mode)

正常模式 下, 按 i 即可进入该模式. 只有在 插入模式 下,才可以做文本输入, 按 ESC 键可回到 正常模式 . 该模式是我们后面使用最频繁的编辑模式.

3. 末行模式 (Last line mode)

可以完成文件保存或退出, 文件替换, 查找字符串, 列出行号等操作. 在 正常模式 下, shift + ; (:) 即可进入该模式. 要查看你的所有模式:打开vim,底行模式直接输入 help vim-modes.

4. 可视模式 (Visual mode)

正常模式 按下 v, V, Ctrl + v, 都可以进入可视模式. 可视模式中的操作有点像拿鼠标进行操作, 选择文本的时候有一种鼠标选择的即视感, 有时候会很方便.

5. 替换模式(Replace mode)

在正常模式按下 R, 即可进入替换模式. 替换模式并没有那么常用,因为在命令模式中就可以直接进行替换,也就是按下 r 键, 然后直接对当前光标所在字符进行替换即可. 但是每次只可替换一次或者批量替换 , 在 替换模式 中可连续替换, 更加方便.

二. vim 基本操作

安装 vim

普通用户: sudo yum install -y vim

root: yum -y install vim

进入 vim

直接输入 vim, 即可进入 vim 的初始界面.

这只是 vim 的编辑界面, 可以看到左上角的 [No Name], 并没有对任何一个文件操作.

vim + 文件名, 创建文件并用 vim 打开该文件.

现在就可以在 code.c 文件中编辑代码了.

vim 中的模式切换

当用 vim 打开文件时, 默认为 命令模式.

要想从命令模式切换为其他模式, 就要按下对应的功能键, 以下是 vim中常见的5种模式相互切换的示意图.

插入模式.

末行模式.

可视模式.

替换模式.

三. vim 指令集

1. 命令模式指令集

移动光标

vim 可以直接用键盘上 ↑ ↓ ← → 来进行移动, 但更正规的做法是用小写英文字母 h, j, k, l, 分别控制光标左, 下, 上, 右移动一格.

  • $ : 移动到光标所在行的 "行尾" (Shift + 4) .

  • ^ : 移动到光标所在行的 "行首" (Shift + 6) .

  • w : 光标跳到 下个单词的开头 .

  • b : 光标回到 上个单词的开头 .

  • gg : 使光标移动到 文本的开头 .

  • G : 使光标移动到 文本的末端 (Shift + g).

  • n + G : 定位光标到 第 n 行行首 (n + Shift + g).

  • Ctrl + b : 屏幕往前 (上) 移动一页.

  • Ctrl + f : 屏幕往后 (下) 移动一页.

  • Ctrl + u : 屏幕往前 (上) 移动半页.

  • Ctrl + d : 屏幕往后 (下) 移动半页.

复制粘贴

  • yw : 将光标所在之处到 当前单词末端 的字符复制到缓冲区中.

  • n + yw: 复制 n 个 单词 到缓冲区.

  • yy: 复制光标 所在行 到缓冲区.

  • n + yy: 复制 n 行 (包括光标所在行) 到缓冲区.

  • p: 将缓冲区内的字符粘贴到 光标所在行的下一行.

  • n + p: 将缓冲区内的字符粘贴到 光标所在行的下一行 这一行为重复 n 次.

删除

  • x: 每按一次 x , 删除光标所在位置的一个字符.

  • n + x: 删除从光标所在字符开始的 n 个字符 (包括光标所在字符本身).

  • dd: 删除光标所在行.

  • n + dd : 删除光标所在行开始向下 n 行 (包括光标所在行).

撤销

  • u: 如果误执行一个命令, 可以马上按下 u, 撤销上一个操作. 按多次 u 可以执行多次复原.

  • Ctrl + r : 撤销的恢复.

替换

  • r: 替换光标所在处的字符.

  • n + r: 对光标字符加之后的共 n 个字符进行批量化替换 (都替换为同一字符).

  • R :替换光标所到之处的字符, 直到按下 Esc 键为止 (也就是替换模式) ( Shift + r ).

大小写切换

  • ~ ( Shift + ~左边的那个字符 )

2. 插入模式指令集

在插入模式下, 可以对代码做增, 删, 修改的操作, 因此不存在指令集. 但是插入模式也被分为好几种, 换言之就是从命令模式 按下 [特定键] 即可进入不同插入模式.

  • i: 从光标所在位置开始输入字符.

  • Shift + i: 进入插入模式后使光标快速切换到当前行行首.

  • a: 从光标所在位置的下一个位置开始输入字符.

  • Shift + a: 进入插入模式后使光标快速切换到当前行行尾.

  • o: 新起一行 (光标当前所在行的下一行 ), 从行首开始输入字符.

  • Shift + o: 新起一行 (光标当前所在行的上一行 ), 从行首开始输入字符.

3. 末行模式指令集

列出和去除行号

  • :set nonu 去除行号.
  • :set nu 列出行号.

跳到某一行

  • :行号 跳到行号所指定的行.

查找字符

  • /关键字 : 先按 / 键, 再输入想查找的字符, 如果第一次找的字符不是想要的, 可以一直按 n 键会 往后寻找 到最后一个要查找的字符为止.

  • ?关键字 : 先按 ? 键, 再输入想查找的字符, 如果第一次找的字符不是想要的, 可以一直按 n 键会 往前寻找 到最后一个要查找的字符为止.

替换字符

  • %s/替换前的字符串/替换后的字符串/g, 批量替换相同的字符串.

%s 可以看成是 C 语言中字符串的格式声明, g 代表 global 整体的.

保存及退出vim

  • q: 直接退出.

  • q!: 强制退出.

  • w: 保存.

  • wq: 保存并退出.

  • wq!: 保存并强制退出.

不退出 vim 进行相关指令操作

  • ! + 指令 相当于在外部执行指令.

Press ENTER or type command to continue [按下任意键继续]

多文件分屏编辑文本

  • vs [文件名] 打开多个文件编辑窗口.

  • Ctrl + ww: 切换光标到不同的窗口.

4. 可视模式指令集

在可视模式下,比较常用的功能是多行注释. 需要配合 [命令模式][底行模式] 一起使用.

多行注释

Ctrl + v 进入可视模式.

进入可视模式后, 选择要注释的行, 按 j 往下选择多行.

然后按下 Shift + i 进入插入模式, 并在光标所在处输入 // .

然后按下 Esc 键, 完成多行注释, 并回到命令模式.

取消多行注释

Ctrl + v 进入可视模式.

按两次 l, 使光标向右移动两次, 将两个 / 都选中.

j 键使光标向下移动, 直到选中所有的注释.

d 键即可将所有注释删除, 并自动回到命令模式.

5. 替换模式指令集

R 指令( Shift + r ) 让你一步到位进入替换模式: 对于需要替换多个字符, 更好的方案是直接进入替换模式. 按下大写的 R 键, 屏幕左下角出现 REPLACE 字样, 说明你已经处于替换模式. 此时输入字符可以连续替换光标及其后边的内容.

Tip: 退格键 (Backspace) 的作用

  • 若光标所在字符的左侧字符被替换过, 则使得左侧被替换的字符恢复到原来的字符.
  • 若光标所在字符的左侧字符没有被替换过, 则只是使光标简单的向左移动.

四. vim 配置

自定义配置

各用户有关 vim 的配置是相互独立的, 因为这取决于每个用户家目录 下的配置文件 .vimrc. 所以在配置某普通用户的 vim 时, 是不会影响其他用户的 vim 的.

由于 .vimrc 是配置文件, 需要 ll -a 才可以查看其属性.

vim .vimrc 查看配置文件 (如下为配置好的 .vimrc, 第一次打开 .vimrc 为空白).

有关 vim 配置的操作可以参考以下两篇文章.

.vimrc文件配置

手把手教你把Vim改装成一个IDE编程环境

自动化配置

某大神的自动化配置.

VimForCpp: 快速将vim打造成c++ IDE

将该链接复制并粘贴到命令行下.

输入 root 密码即可安装.

配置完后产生如下提醒, 输入 source ~/.bashrc 让配置文件生效.

配置完成.

相关推荐
极客小张5 分钟前
基于正点原子Linux开发板的智能监控与家电控制系统设计:深度解析Video4Linux和TCP/IP技术栈
linux·运维·c++·物联网·网络协议·tcp/ip·算法
sunxunyong5 分钟前
Linux 删除文件不释放空间问题处理
大数据·linux·运维·服务器
只对您心动1 小时前
【C高级】有关shell脚本的一些练习
linux·c语言·shell·脚本
lldhsds1 小时前
linux下的分布式Minio部署实践
linux·minio·分布式对象存储
OH五星上将2 小时前
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核通信机制】上
linux·嵌入式硬件·harmonyos·openharmony·鸿蒙开发·liteos-a·鸿蒙内核
沈艺强3 小时前
伊犁linux 创建yum 源过程
linux·运维·服务器
拾光师3 小时前
linux命令行快捷键
linux·运维·服务器
Dola_Pan5 小时前
Linux文件IO(二)-文件操作使用详解
java·linux·服务器
城南云小白7 小时前
Linux网络服务只iptables防火墙工具
linux·服务器·网络
咩咩大主教7 小时前
C++基于select和epoll的TCP服务器
linux·服务器·c语言·开发语言·c++·tcp/ip·io多路复用