Linux 开发工具(二) 简单认识一下编辑器 —— vim

目录

[一. vim](#一. vim)

[1.1 什么是 vim](#1.1 什么是 vim)

[1.2 vim 的多模式](#1.2 vim 的多模式)

[1.2.1 命令模式](#1.2.1 命令模式)

[1.2.1.1 命令模式下的光标移动](#1.2.1.1 命令模式下的光标移动)

[1.2.1.2 在命令模式下的编辑](#1.2.1.2 在命令模式下的编辑)

[1.2.1.3 在命令模式下的查找](#1.2.1.3 在命令模式下的查找)

[1.2.2 插入模式\编辑模式](#1.2.2 插入模式\编辑模式)

[1.2.2.1 命令模式进入插入模式的其他方法](#1.2.2.1 命令模式进入插入模式的其他方法)

[1.2.2.2 退出](#1.2.2.2 退出)

[1.2.3 底行模式](#1.2.3 底行模式)

[1.2.3.1 简单命令](#1.2.3.1 简单命令)

[1.2.4 视图模式](#1.2.4 视图模式)

[1.2.4.1 批量化注释](#1.2.4.1 批量化注释)

[1.2.4.2 批量化去注释](#1.2.4.2 批量化去注释)

[1.2.4.3 批量化处理](#1.2.4.3 批量化处理)

[1.2.5 两个实用的技巧](#1.2.5 两个实用的技巧)

[1.2.5.1 vim 文件名 +行号](#1.2.5.1 vim 文件名 +行号)

[1.2.5.2 !](#1.2.5.2 !)


一. vim

1.1 什么是 vim

vim 可以看作是文本编辑器,作用主要就是**编写代码和修改各种文本文件。​​​​​​我们常用的 vscode 其实也算是文本编辑器,只不过 vscode 的功能更加多样,是一个集成开发环境简称IDE,**可以编写代码、编译、调用、运行等等,文本编辑器只是它的一种功能。

1.2 vim 的多模式

vim 的模式有很多,高达十几种,但是最常用的只有三种:

1.2.1 命令模式

vim的命令模式其实就是启用vim时进入的默认模式。

1.2.1.1 命令模式下的光标移动
  • 基本移动(可以用n) :h (左)、j(下)、k(上)、l(右)(替代方向键,手指不离主键盘)我们可以在相应的指令前加上数字来加快我们的移动:6h 向左移动6次。
  • 单词移动(可以用n) :w(下一个单词开头)、b(上一个单词开头)同样可以在前面加上数字加快移动。
  • 行内移动 :shift+6(行首第一个非空字符)、shift+4(行尾)
  • 文件内移动 :gg(文件开头)、shift+g(文件结尾)、nG(跳转到第 n 行,如 5G 跳第 5 行)
1.2.1.2 在命令模式下的编辑
  • 复制粘贴 :yy(复制当前行)、yw(复制当前单词)、p(光标后粘贴)、[shift+p](P)(光标前粘贴)、nyy(复制n行,比如 5yy 复制5行)、np(将复制内容粘贴n次)
  • 删除 :x(删除/剪切光标处字符)、dd(删除/剪切当前行)、dw(删除当前单词)、ndd(删除/剪切 n 行,比如3dd,删除/剪切3行)、shift+x(删除/剪切光标处左侧字符)、nx(删除n个字符)
  • 撤销与重做 :u(撤销上一步)、Ctrl+r(重做撤销操作)、.(重复上一次编辑命令)
  • 替换 :r(替换光标处单个字符)、shift+r(进入替换模式 ,替换模式和插入模式功能大致一样,只是当光标移动到有字符的位置时,不是插入而是替换)、nr(替换光标处开始的n个字符)
  • 切换 :~:(对特定的字符进行大小写切换,光标自动跳跃到该行下一个字符)
1.2.1.3 在命令模式下的查找

在命令模式下,把光标移动到要查找的单词上,按Shift+3(也就是 #),Vim 会自动识别光标所在单词,并向上查找相同单词;之后按 n 可以继续沿向上的方向查找下一个相同单词。

1.2.2 插入模式\编辑模式

当我们想要对文本进行编辑时,就需要进入插入模式,我们只需要**在命令模式下按i即可进入。**当左下角的字变为INSERT时就代表进入了插入模式。

1.2.2.1 命令模式进入插入模式的其他方法

除了输入i,在命令模式下输入a、o也都可以进入插入模式

**i:**光标所处位置不动。

a: 光标往后退一格。

o: 光标往下退一格,并且开辟新行。

1.2.2.2 退出
  • 在当前模式下 vim 是不能退出的,你先按ESC退入到默认模式下,然后输入大写的ZZ即可退出。
  • 如果我们不想在插入模式退出,我们也可以通过命令在底行模式下退出,首先按下shift+;进入底行模式,在底行命令中w代表保存,q代表退出,wq就是保存并退出。

1.2.3 底行模式

在命令模式下按下shift+;进入底行模式(底行模式回退到命令模式按下ESC即可),我们想设置行号就可以通过底行命令set un完成:

1.2.3.1 简单命令
  • 保存退出: 这个我们之前讲过,这里主要提一下:w!(强制保存)、q!(强制退出)、wq!(强制保存并退出)
  • 行号: set nu(显示行号)、set nonu(取消行号)
  • 能直接回到vim: !command(bash中执行的命令,都可以在底行之间切换)--再按任意键回到vim
  • 批量替换: %s/被替换/新内容/g(用新内容替换指定项目)
  • 查找:****/要查找的内容、n(下一个)、N(上一个)
  • **分屏:**vs 文件名(分屏,用来写文件,光标在那就以哪个文件为主)、ctrl+ww(移到其它文件)
    这里提一嘴,vim 未创建的文件名、 vim 下 vs 未创建的文件名都会代开一个新缓冲区,只有保存了才会以此文件名建立新的文件。

1.2.4 视图模式

在命令模式下按下ctrl+v进入视图模式,视图模式回退到命令模式按下ESC即可。

1.2.4.1 批量化注释
1.2.4.2 批量化去注释
1.2.4.3 批量化处理

例如:我要把hallo world里的world全部删除

例如:我又把world重新插入

1.2.5 两个实用的技巧

1.2.5.1 vim 文件名 +行号

意思就是打开文件的同时,光标定位到想要的行号。

bash 复制代码
vim code.cpp +2
1.2.5.2 !

之前在指令(三)中提到过 ctrl+r 和 上下键 可以快速使用历史指令,这次的指令也是一样;

bash 复制代码
!vim
#按下回车,找最近一条以vim开头的历史命令
#直接再次执行
#假如我最近执行了指令 vim code.cpp,那么按下回车,直接执行 vim code.cpp
相关推荐
琥珀.16 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu16 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈18 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
slongzhang_19 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮19 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
无足鸟ICT20 小时前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器
Escalating_xu20 小时前
【Linux 网络编程】应用层协议 HTTP(下):Header、连接管理与 C++ HTTP 服务器
linux·服务器·网络
GeW1 天前
新质生产力路线图落地,Linux运维与数据库架构师的机会清单
linux
Brilliantwxx1 天前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
father_12271 天前
Greenplum 集群故障恢复与主备同步机制实战
linux·网络·greenplum