Linux基础开发工具—vim

server/2025/3/13 8:46:46/

目录

vim%E7%9A%84%E6%A6%82%E5%BF%B5-toc" name="tableOfContents" style="margin-left:0px">1、vim的概念

vim%E7%9A%84%E5%B8%B8%E8%A7%81%E6%A8%A1%E5%BC%8F-toc" name="tableOfContents" style="margin-left:0px">2、vim的常见模式

vim%E6%A8%A1%E5%BC%8F-toc" name="tableOfContents" style="margin-left:40px">2.1 演示切换vim模式

vim%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C-toc" name="tableOfContents" style="margin-left:0px">3、vim命令模式常用操作

3.1 移动光标

3.2 删除文字

3.3 复制

3.4 替换

vim%E5%BA%95%E8%A1%8C%E6%A8%A1%E5%BC%8F%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-toc" name="tableOfContents" style="margin-left:0px">4、vim底行模式常用命令

4.1 查找字符

vim%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6-toc" name="tableOfContents" style="margin-left:0px">5、vim的配置文件


vim%E7%9A%84%E6%A6%82%E5%BF%B5" name="1%E3%80%81vim%E7%9A%84%E6%A6%82%E5%BF%B5">1、vim的概念

Vim全称是Vi IMproved,即说明它是Vi编辑器的增强版。

Vim是一种多模式编辑器,不同模式下按键功能不同。

vim%E7%9A%84%E5%B8%B8%E8%A7%81%E6%A8%A1%E5%BC%8F" name="2%E3%80%81vim%E7%9A%84%E5%B8%B8%E8%A7%81%E6%A8%A1%E5%BC%8F">2、vim的常见模式

vim的常见模式有三种:命令模式、插入模式、底行模式。

命令模式(Normal mode)

vim打开文件时默认的模式,控制屏幕光标的移动,字符、字或行的删除,移动复制某区段进入插入模式下,或者到底行模式。

插入模式(Insert mode)

只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令模式。该模式是我们后面使用得最频繁的编辑模式。在命令模式下按i\o\a等即可进入插入模式。

底行模式(last line mode)

可以执行文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,按下shift+: 即可进入该模式,按「ESC」键可回到命令模式

三种模式的切换


vim%E6%A8%A1%E5%BC%8F" name="2.1%20%E6%BC%94%E7%A4%BA%E5%88%87%E6%8D%A2vim%E6%A8%A1%E5%BC%8F">2.1 演示切换vim模式

在bash中输入vim+文件名就可以用vim打开文件,此时vim为默认的命令模式

这就是进入了vim且模式为命令模式

从命令模式进入插入模式,需要输入i/o/a。

i\o\a的区别:

i进入后光标在位置不变,但推出后若在一行的首个字符,光标不变,不在就会到上一个字符的位置。

o进入后会光标在上一次的行换行到下一行,退出插入模式回到命令模式后,光标位置不变。

a进入后光标会转移到上一个字符的下一个位置,退出插入模式回到命令模式后,光标会回到在插入模式所处字符的上一个字符位置。

在命令模式下按 : (冒号)即 【shift+;】,就可以进入底行模式


vim%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C" name="3%E3%80%81vim%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C" style="background-color:transparent">3、vim命令模式常用操作

3.1 移动光标

gg:光标定位到文件开头。
shift + g(G):光标定位到文件结尾。
n + shift + g(nG):光标定位到文件第n行。
shift + 6(^):光标定位到行开始。
shift + 4($):光标定位到行结尾。
h、j、k、l:左、下、上、右移动。

3.2 删除文字

x :每按一次,删除光标所在位置的一个字符
n + x :例如,「6x」表示删除光标所在位置的“后面(包含自己在内)"6个字符
X :大写的X,每按一次,删除光标所在位置的“前面”一个字符
n + X :例如,「20X」表示删除光标所在位置的“前面”20个字符

以上都是在一行内的操作。是一行内的前后。
dd :删除光标所在行
n + dd :从光标所在行开始删除n行

3.3 复制

yw :将光标所在之处到字尾的字符复制到缓冲区。
n + yw :复制n个字到缓冲区。
yy :复制光标所在行到缓冲区。
n + yy :例如,「6yy」表示连续复制从光标所在的该行“往下数”6行文字到缓冲区。
p :将缓冲区内的字符粘贴到光标所在位置。

n + p : 例如,「6p」表示连续粘贴从光标所在的该行“往下数”6行。

注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

u :撤销

ctrl + r :对撤销撤销

dd :剪切

n + dd :剪切n行

3.4 替换

r :替换光标所在的字符

n + r :替换光标所在的后n个字符

shift + r(R) :替换光标所到之处的字符,直到按下「ESC」键为止。

3.5 批量化注释

批量化注释

1、ctrl v(进入可视化模式)

2、h、j、k、l区域选择,j

3、shift + i = I

4、//

5、ESC

批量化去注释

1、ctrl v

2、h、j、k、l区域选择

3、d


vim%E5%BA%95%E8%A1%8C%E6%A8%A1%E5%BC%8F%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4" name="4%E3%80%81vim%E5%BA%95%E8%A1%8C%E6%A8%A1%E5%BC%8F%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4">4、vim底行模式常用命令

列出行号:set nu

跳转到文件中的某一行:n

保存文件:w

离开vim:q,如果无法离开,在 q 后面加 ! 强制离开vim,此时一般并没有退出,按任意键又可以返回vim

保存并退出:wq

分屏:vs 文件名

4.1 查找字符

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


vim%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6" name="5%E3%80%81vim%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6">5、vim的配置文件

系统中公共的vim配置文件在/etc目录下面,是一个叫vimrc的文件。配置这个文件对所有用户都生效

每个用户的家目录下都有自己的配置文件.vimrc,如果没有可以创建一个。配置这个文件只对该用户有效。

vim的配置就是对这个名为vimrc.vimrc的文件内容的修改。

对于vim的配置,大家可以按照vim的配置代码进行一个一个地配置,也可以在网络上寻找别人公开的vim配置文件进行使用,这里不再赘述。


http://www.ppmy.cn/server/174589.html

相关文章

27、vector和list的区别【高频】

底层结构 vector的底层结构是动态顺序表,在内存中是一段连续的空间。list的底层结构是双向循环链表,在内存中不是一段连续的空间。 随机访问 vector 支持随机访问,可以利用下标精准定位,时间复杂度是O(1)。list 不支持随机访问…

Android Service封装实战:基于Binder与接口的高效通信方案

通过封装Service,可以简化Service的使用和管理,提升代码的可维护性和复用性。无论是本地Service还是跨进程通信,封装都能让代码更加清晰和易于扩展。 1. 封装Service的步骤 1.1 创建基础Service类 创建一个基础的Service类,封装通…

Spring Boot 读取 ZooKeeper (ZK) 属性的总结指南

Spring Boot 读取 ZooKeeper (ZK) 属性的总结指南,涵盖配置定义、绑定、初始化和使用: 1. 在配置文件中定义 ZK 属性 在 application.properties 或 application.yml 中添加 ZK 相关配置: application.properties # 单源配置示例 zookeep…

【ES6】ES6中的类

基础定义和使用 class Animal {constructor(name, species, age) {this.name namethis.species speciesthis.age age} }let dog new Animal("Spot", "Dog", 4)私有变量 变量名前带#即可。 Getter 和Setter方法 继承 // 父类 class Point{construc…

用Qt手搓AI助手,挑战24小时开发DeepSeek Assistant!

一、项目需求分析与技术选型 DeepSeekAssistant是一款基于深度求索(DeepSeek)API的智能对话助手,核心需求包括: 用户界面友好:支持多轮对话展示数据持久化:历史记录存储与检索异步网络通信:AP…

动态规划/贪心算法

一、动态规划 动态规划 是一种用于解决优化问题的算法设计技术,尤其适用于具有重叠子问题和最优子结构性质的问题。它通过将复杂问题分解为更简单的子问题,并保存这些子问题的解以避免重复计算,从而提高效率。 动态规划的核心思想 最优子结…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_02带边框和斑马纹的固定表头表格

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

基于MATLAB的冰块变化仿真

如图1所示,边长为5cm的冰块,初始温度为-2℃,放在25℃的环境中自然冷却,对流换热系数为10W/mK,本文将通过matlab编程求解冰块融化的过程,计算其温度场。 图1 案例示意图 02 温度场计算 本文通过matlab分别…