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
相关推荐
AlfredZhao1 小时前
堡垒机里 `su - oracle` 被拦截,怎么绕过限制切换用户
linux
zhangjw341 小时前
1-1 PostgreSQL 多平台环境部署:Linux|Docker|Windows|MacOS 完整实操
linux·docker·postgresql
还卿一钵无情泪11 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
高山有多高11 小时前
【Linux笔记】IO模型
linux
不会就选b12 小时前
Linux之TCP理论<1>
linux·运维·服务器
小π军12 小时前
操作系统面试题
java·linux·服务器
Lsetea13 小时前
curl用IP测试HTTPS报证书不匹配:--resolve与Host头别混用
linux·https·ssl证书·openssl·curl
Hao28514 小时前
Windows11 下把 WSL2 Ubuntu 26.04 装到 D 盘完整
linux
Android系统攻城狮14 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_samples_min调用流程与实战(六十)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶