Linux开发工具——vim

news2025/4/5 14:09:48

📝前言:

上篇文章我们讲了Linux开发工具——apt,这篇文章我们来讲讲Linux开发工具——vim

🎬个人简介:努力学习ing
📋个人专栏:Linux
🎀CSDN主页 愚润求学
🌄其他专栏:C++学习笔记,C语言入门基础,python入门基础,C++刷题专栏


目录

  • 一,什么是vim
  • 二,vim的五个常用模式
    • 1. 命令模式
      • 常用命令集
        • 1. 光标移动
        • 2. 文本编辑
        • 3. 查找与替换
    • 2. 底行模式
      • ZZ操作
    • 3. 插入模式
    • 4. 视图模式
    • 5. 替换模式
  • 三,vim配置
    • vim配置文件的注释

一,什么是vim

在Windows下,我们写代码通常依靠如:vs2022vs2022是一个集代码编辑,代码调试,代码编译…为一身的集成开发环境
而在Linux下,这些功能通常是分开使用不同的工具来完成的。vim就是一一个多模式编译器

在这里插入图片描述
操作很多,我们主要掌握几个常用的!

进入vim的方式:vim 文件名 [+ n]n可选,跳转到第n行。

二,vim的五个常用模式

vim共有12种模式,但是,我们先掌握vim的五个常用模式:

  • 命令模式(用于执行各种操作指令),直接Vim进入的普通模式
  • 插入模式(用于输入和编辑文本内容)
  • 底行模式(用于配置设定、文件操作)
  • 视图模式(用于对文本块进行选择、复制、删除等批量操作)
  • 替换模式(用于逐个或全部替换指定位置的字符)

在这里插入图片描述
命令模式是核心,任何模式回到命令模式都按Esc

打开vim,进入的默认是命令模式:
在这里插入图片描述

1. 命令模式

只有插入模式可以编辑,命令模式就是执行命令的地方。

常用命令集

1. 光标移动

以下大部分操作都可以在输入前先输入一个数字n代表移动n次,即:移动到第n个。

  1. 上下左右h:左,j:下,k:上,l:右
  2. 行间移动gg:移动到第一行, shift + g:移动到最后一行, n + shift + g:移动到第n行(按完n,再一起按shift + g
  3. 行内移动shift + $:该行结尾,shift + ^:该行开头
  4. 按单词移动w后一个单词,b前一个单词
2. 文本编辑

大多数删除都具有剪切效果,大多数也都可以前带n

  1. 复制yy
  2. 删除/剪切dd
  3. 粘贴p:在光标的下一行粘贴,P:在上一行粘贴
  4. 删除x:删除当前光标所在的字符,往右删,X:往左删
  5. 撤销u 撤销上一步操作;Ctrl + r 恢复被撤销的操作

注意:撤销操作:一旦退出文件编辑,就无法撤销。但只是保存,没有q退出文件编辑,都可以撤销。

3. 查找与替换
  • 查找:按 / 后输入要查找的内容,按回车键开始向后查找,按 n 查找下一个匹配项,按 N 查找上一个匹配项。(或者#:向上查找当前光标所在的单词)
  • 替换r :替换当前光标所在的字符(先按r,再输入新字符);R进入替换模式,之后输入的字符会逐个替换当前光标所在的字符,按 Esc 退出替换模式。
  • 大小写替换Ctrl + ~

2. 底行模式

输入shift + ;进入底行模式
输入:

  • w:保存当前⽂件
  • wq :存盘并退出vim
  • q!:不存盘强制退出vim(即如果有修改,不询问你是否保存,普通的q会询问)
  • set nu/nonu:设置(取消)行号,
  • ! 外部命令:无须退出vim,直接执行外部命令
  • %s /dst/src/[g/i]:用src替换dstg/i可选,g:全局替换,i忽略大小写替换
  • vs new_src:分屏操作,这时候,光标在哪里,就是对哪个文件操作。用ctrl +ww实现切换光标所在的屏幕

ZZ操作

在vim模式下连按ZZ(大写):保存当前文件并退出vim。相当于底行模式下输入wq

3. 插入模式

没什么好说的,编辑的地方
在这里插入图片描述
底下会有一个INSERT的标志,写完以后按Esc退出到命令模式,换到底行模式wq保存,或者直接ZZ保存并退出vim

4. 视图模式

Ctrl +v进入视图模式,主要用于区域选择,进行区域操作。
如,进行区域注释:

  1. 进入视图模式后,hjkl进行区域选择
  2. shift + i直接切换到插入模式
  3. 输入//,进行注释
  4. Esc回到命令模式,就会批量注释之前区域选择的行(相当于是在所选的行内都执行了输入//的那一行的操作)

上述操作一般用于插入数据,删除:

  1. Ctrl + v进入视图模式
  2. 选中要删除的内容
  3. d

5. 替换模式

R进入,进行批量化替换。

三,vim配置

vs2022这类编译器,会有代码补全,高亮等功能。但是vim如果想要实现这些功能需要自行配置。
vim在使用的时候会自动到用户的目录下搜索.vimrc配置文件,所以我们要配置的就是个人用户的.vimrc文件。(注意:安装vim的时候不会自动生成.vimrc文件,所以我们要touch ~/.vimrc,自己在个人用户目录下创建文件,然后进行配置)

配置vim,原⽣的配置可能功能不全,可以选择安装插件来完善配置(如实现代码自动补全的功能)

这里提供一个GIthub上自动配置vim的项目,如果网络不好clone不动的话,也可以考虑自己先下载zip到本地,然后上传云服务器。

在这里插入图片描述
有这个现实以后,代表你安装好了。这时候你就可以自行安装自己需要的插件了。(根据GIthub上的步骤,配置文件)

vim配置文件的注释

Vim 配置文件.vimrc中使用 " 进行注释。

推荐一篇文章:vim从入门到牛逼


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3学习二

认识组件的嵌套 还可以将Main中内容再划分 scoped防止组件与组件之间的样式相互污染 组件的通信 父子组件之间通信的方式 父组件传递给子组件 给传过来的内容做限制 type为传的内容的属性类型,required为true表示该内容是必须传的,default为&#xff0c…

[ deepseek 指令篇章 ]300个领域和赛道喂饭级deepseek指令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

2024第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、握手问题-(解析)-简单组合问题(别人叫她 鸽巢定理)😇,感觉叫高级了…

C++ | C++11知识点

前言: 本篇内容讲述了C11中比较重要的内容为:右值引用、可变参数模板、lambda表达式和包装器。 ps:包装器博主在另一篇文章讲述的,本篇文章包装器板块为原文链接。 C11知识点目录 花括号初始化自定义类型的花括号初始化内…

LeetCode 1123.最深叶节点的最近公共祖先 题解

昨天写了三题,今天目前为止写了一题,玩了会游戏稍微休息了下 先来理解一下今天的题目,今天的题目类型是递归遍历找最深位置,先通过几个样例了解一下 输入:root [3,5,1,6,2,0,8,null,null,7,4] 输出:[2,7,…

工具介绍 | SafeLLMDeploy教程来了 保护本地LLM安全部署

SafeLLMDeploy:保护本地大语言模型安全部署的“守护者” 在AI技术飞速发展的今天,大语言模型(LLM)如GPT、DeepSeek等正以前所未有的方式改变着我们的工作和生活。然而,本地部署这些强大的AI系统在带来便利的同时&…

机器学习-04-分类算法-03KNN算法案例

实验名称 K近邻算法实现葡萄酒分类 实验目的 通过未知品种的拥有13种成分的葡萄酒,应用KNN分类算法,完成葡萄酒分类; 熟悉K近邻算法应用的一般过程; 通过合理选择K值从而提高分类得到正确率; 实验背景 本例实验…

Java 搭建 MC 1.18.2 Forge 开发环境

推荐使用 IDEA 插件 Minecraft Development 进行创建项目 创建完成后即可进行 MOD 开发。 但是关于 1.18.2 的开发教程太少,因此自己研究了一套写法,写法并非是最优的但是是探索开发MOD中的一次笔记和记录 GITHUB: https://github.com/zimoyin/zhenfa…

计算机网络知识点汇总与复习——(三)数据链路层

Preface 计算机网络是考研408基础综合中的一门课程,它的重要性不言而喻。然而,计算机网络的知识体系庞大且复杂,各类概念、协议和技术相互关联,让人在学习时容易迷失方向。在进行复习时,面对庞杂的的知识点&#xff0c…

主机和虚拟机间的网络通信

参考:Vmware虚拟机三种网络模式详解 - 林加欣 - 博客园 (cnblogs.com) 虚拟机配置 一般额外配置有线和无线网络 桥接模式 虚拟机和主机之间是同一个网络,用一根线连接了虚拟机和物理机的网卡,可以选择桥接的位置,默认情况下是自动桥接&…

嵌入式Linux开发环境搭建,三种方式:虚拟机、物理机、WSL

目录 总结写前面一、Linux虚拟机1 安装VMware、ubuntu18.042 换源3 改中文4 中文输入法5 永不息屏6 设置 root 密码7 安装 terminator8 安装 htop(升级版top)9 安装 Vim10 静态IP-虚拟机ubuntu11 安装 ssh12 安装 MobaXterm (SSH)…

说清楚单元测试

在团队中推行单元测试的时候,总是会被成员问一些问题: 这种测试无法测试数据库的SQL(或者是ORM)是否执行正确?这种测试好像没什么作用?关联的对象要怎么处理呢?…借由本篇,来全面看一看单元测试。 单元测试是软件开发中一种重要的测试方法,其核心目的是验证代码的最小…

电商---part02 项目环境准备

1.虚拟机环境 可以通过VMWare来安装,但是通过VMWare安装大家经常会碰到网络ip连接问题,为了减少额外的环境因素影响,Docker内容会通过VirtualBox结合Vagrant来安装虚拟机。 VirtualBox官网:https://www.virtualbox.org/ Vagran…

LabVIEW提升程序响应速度

LabVIEW 程序在不同计算机上的响应速度可能存在较大差异,这通常由两方面因素决定:计算机硬件性能和程序本身的优化程度。本文将分别从硬件配置对程序运行的影响以及代码优化方法进行详细分析,帮助提升 LabVIEW 程序的执行效率。 一、计算机硬…

工业领域网络安全技术发展路径洞察报告发布 | FreeBuf咨询

工业网络安全已成为国家安全、经济稳定和社会运行的重要基石。随着工业互联网、智能制造和关键基础设施的数字化升级,工业系统的复杂性和互联性显著提升,针对工业领域的网络攻击朝着目标多样化、勒索攻击产业化、攻击技术持续升级的方向发展,…

WPF 登录页面

效果 项目结构 LoginWindow.xaml <Window x:Class"PrismWpfApp.Views.LoginWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.…

【数学建模】动态规划算法(Dynamic Programming,简称DP)详解与应用

动态规划算法详解与应用 文章目录 动态规划算法详解与应用引言动态规划的基本概念动态规划的设计步骤经典动态规划问题1. 斐波那契数列2. 背包问题3. 最长公共子序列(LCS) 动态规划的优化技巧动态规划的应用领域总结 引言 动态规划(Dynamic Programming&#xff0c;简称DP)是一…

leetcode-代码随想录-链表-移除链表元素

题目 链接&#xff1a;203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 …

论文阅读Diffusion Autoencoders: Toward a Meaningful and Decodable Representation

原文框架图&#xff1a; 官方代码&#xff1a; https://github.com/phizaz/diffae/blob/master/interpolate.ipynb 主要想记录一下模型的推理过程 &#xff1a; %load_ext autoreload %autoreload 2 from templates import * device cuda:1 conf ffhq256_autoenc() # pri…

Python集合(五)

集合一&#xff1a; 跟字典一样&#xff0c;最大的特性就是唯一性&#xff0c;集合中的所有的元素都是独一无二的&#xff0c;并且还是无序的 创建集合 第一种&#xff1a; 第二种&#xff1a;集合推导式&#xff1a; 第三种&#xff1a;使用类型构造器&#xff1a; 集合是无…