【linux】vim的使用

 目录

一、Vim的基本模式

二、Vim的常见命令

三、Vim的高级用法

四、Vim的进阶使用技巧


       在Linux系统中,Vim是一款功能强大的文本编辑器,特别适用于程序员的代码编辑和修改。以下是Vim的详细使用教程,包括其基本模式、常见命令和高级用法。

一、Vim的基本模式

        Vim具有三种主要的工作模式:

        命令模式(Normal mode):这是Vim的默认模式。在命令模式下,你可以进行复制、粘贴、剪切、查找、替换等操作,还可以进入插入模式或底行模式。

        插入模式(Insert mode):在插入模式下,你可以输入文本。要进入插入模式,可以在命令模式下按`i`(在当前字符前插入)、`a`(在当前字符后插入)、`o`(在当前行下方新开一行)等键。要退出插入模式回到命令模式,按`Esc`键。

        底行模式(Visual mode/Visual Line mode/Visual Block mode):在底行模式下,你可以执行保存、退出Vim、查找替换等命令。在命令模式下,按`:`可以进入底行模式。

二、Vim的常见命令

        1. 移动光标:在命令模式下,使用`h`(左)、`j`(下)、`k`(上)、`l`(右)键移动光标。也可以使用`w`(移动到下一个单词的开头)、`b`(移动到上一个单词的开头)等键。

        2. 删除文本:在命令模式下,`x`键删除当前光标处的字符,`dd`键删除当前行,`dw`键删除从当前光标到单词末尾的内容。

        3. 复制和粘贴:在命令模式下,`yy`键复制当前行,`p`键粘贴。

        4. 查找和替换:在底行模式下,使用`:%s/old/new/g`命令进行全文替换,其中`old`是要被替换的文本,`new`是替换后的文本。

        5. 保存和退出:在底行模式下,`:w`命令保存文件,`:q`命令退出Vim。如果要保存并退出,可以使用`:wq`命令或简写为`ZZ`。

三、Vim的高级用法

        1. 可视模式:在命令模式下,按`v`键进入可视模式,此时你可以使用方向键选择文本块。按`V`键进入可视行模式,可以整行整行地选择文本。按`Ctrl+v`进入可视块模式,可以选择矩形区域的文本。

        2. 多文件操作:Vim支持同时编辑多个文件。在底行模式下,使用`:e filename`命令可以打开另一个文件。使用`:n`和`:prev`命令可以在多个文件之间切换。

        3. 宏录制:Vim支持宏录制功能,你可以录制一系列操作,并在需要时重复执行。在命令模式下,按`q`键开始录制宏,然后执行你要录制的操作。录制完成后,按`q`键停止录制。要执行宏,可以在命令模式下按`@`键后跟上宏的编号。

        4. 自定义配置:Vim的配置文件是`.vimrc`,位于用户家目录下。你可以在这个文件中设置各种选项和映射,以自定义Vim的行为和外观。

四、Vim的进阶使用技巧

        1. 折叠代码:Vim支持代码折叠,这对于编辑长文件或代码文件特别有用。你可以使用`zc`(折叠)、`zo`(打开折叠)、`zM`(折叠所有)、`zR`(打开所有折叠)等命令来操作。在`.vimrc`文件中,你可以通过`set foldmethod`来设置折叠方法(如`indent`、`syntax`等)。

        2. 自动补全:Vim具有强大的自动补全功能,包括关键字补全、字典补全、文件名补全等。在插入模式下,你可以按`Ctrl+n`或`Ctrl+p`来触发关键字补全,按`Ctrl+x Ctrl+f`来触发文件名补全。

        3. 缩进和格式化: Vim可以自动缩进你的代码,并保持一致的格式。你可以使用`=`键来自动缩进当前行或选中的文本块。在`.vimrc`文件中,你可以设置`cindent`、`smartindent`或`autoindent`等选项来控制缩进行为。

        4. 标记和跳:Vim支持在文件中设置标记,并快速跳转到这些标记。在命令模式下,你可以使用`m<a-z>`来设置标记(其中`<a-z>`是字母键),使用`'<a-z>`或`` `<a-z>``来跳转到标记。

        5. 分屏编辑:Vim支持在一个窗口中同时编辑多个文件。你可以使用`:split`或`:vsplit`命令来水平或垂直分割窗口,并使用`Ctrl+w`加上方向键来在窗口之间切换。

        6. 插件管理:Vim有许多强大的插件可以扩展其功能。为了管理这些插件,你可以使用Vim的插件管理器,如Vundle、Pathogen或NeoBundle。在`.vimrc`文件中,你可以配置这些管理器来自动安装、更新和卸载插件。

        7. 使用Vim的教程和文档:Vim自带了详细的教程和文档,你可以在Vim中直接访问它们。在Vim中,输入`:help`命令可以打开帮助文档,输入`:tutor`命令可以打开Vim的交互式教程。

        8. 自定义快捷键:你可以在`.vimrc`文件中定义自己的快捷键来执行常用的操作。例如,你可以定义一个快捷键来快速保存并退出Vim,或者定义一个快捷键来快速格式化当前代码块。

        9. 与其他工具的集成:Vim可以与其他工具(如编译器、构建系统、版本控制系统等)集成,以提高工作效率。例如,你可以使用Vim的插件来自动编译和运行你的代码,或者使用Vim的插件来与Git等版本控制系统进行交互。

        Vim是一个功能强大且高度可定制的文本编辑器,它可以帮助你更高效地编写和编辑文本。虽然Vim的学习曲线可能有些陡峭,但一旦你掌握了它的基本操作和高级技巧,你就会发现它是一个非常强大的工具。希望这个进阶使用教程能帮助你更深入地了解Vim,并进一步提高你的工作效率。

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

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

相关文章

什么是区块链与去中心化技术?

区块链和去中心化技术代表了当今数字世界中最前沿的创新。这些技术不仅重新定义了数据的管理和交换方式&#xff0c;还开启了全新的应用场景。本文将详细介绍区块链和去中心化技术&#xff0c;探讨它们的原理、特点以及应用。 一、区块链技术概述 1. 区块链的定义 区块链是一…

隐藏Python运行产生的缓存文件(__pycache__)

不少同学使用VScode 提交或运行python代码的时候&#xff0c;出现一些缓存文件 类似于(__pycache__) 这种&#xff0c;对于我这种有一丢丢强迫症的人来说&#xff0c;运行一次就得删除一次&#xff0c;那有没有什么办法将其隐藏的&#xff1f; 在vscode编辑器中打开设置&#…

HarmonyOS Next开发学习手册——创建轮播 (Swiper)

Swiper 组件提供滑动轮播显示的能力。Swiper本身是一个容器组件&#xff0c;当设置了多个子组件后&#xff0c;可以对这些子组件进行轮播显示。通常&#xff0c;在一些应用首页显示推荐的内容时&#xff0c;需要用到轮播显示的能力。 针对复杂页面场景&#xff0c;可以使用 Sw…

lua5.3.4的Linux的库文件下载地址

从这个链接选lua5.3.4 Lua Binaries (sourceforge.net) 进入-> 这个页面 LuaBinaries - Browse /5.3.4/Linux Libraries at SourceForge.net 之后就可以下载了。

第2章_开发板使用

文章目录 第2章 开发板使用2.1 硬件连接2.1.1 连接 ST-Link2.1.2 连接 USB 串口2.1.3 连接 SPI 屏 2.2 运行测试程序验证硬件2.2.1 硬件接线&#xff08;RS485、CAN&#xff09;2.2.2 编译工程2.2.3 配置调试器2.2.4 烧录运行 2.3 创建第 1 个工程2.3.1 创建工程2.3.2 选择调试…

深入理解Spring Boot中的自动配置原理

深入理解Spring Boot中的自动配置原理 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; Spring Boot 的自动配置是其核心特性之一&#xff0c;它极大地简化了 S…

动态规划基础练习

我们需要先从数组较大的开始进行处理&#xff0c;每次考察上下左右的&#xff0c;比较当前存储的最大值和转移来的值&#xff0c;哪一个大一点 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using namespace std;int n, m; int a[105][105]; int addx[] { 0,…

linux下docker安装与镜像容器管理

linux下docker安装与镜像容器管理 原文链接&#xff1a;linux下docker安装与镜像容器管理 导言 ubuntu22.04-docker engine安装&#xff0c;以及镜像容器管理 docker非常简单介绍 docker就是一个虚拟化容器&#xff0c;image是镜像&#xff0c;就是一个dockerfile指明这个镜…

【面试系列】系统管理员 高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

Jenkins - Python 虚拟环境

Jenkins - Python 虚拟环境 引言Python 虚拟环境创建 Python 虚拟环境安装 virtualenv&#xff08;可选&#xff09;创建虚拟环境激活虚拟环境安装依赖包退出虚拟环境&#xff08;可选&#xff09;注意 Python 虚拟环境实践 引言 Automation 脚本通常会部署到 Jenkins 上运行&…

pandas合并,拆分excel

目录 一:按照列进行拆分 二:将某几列的数据写入新excel 三:合并两个sheet数据到一个excel的一个sheet中 我们以商品销售明细为例,说明下excel的数据拆分和合并,我们的原始数据如下: 一:按照列进行拆分 现在我们需要统计下是否配送和支付方式为维度进行分组以后得数据…

成品视频素材下载网站有哪些?剪辑好可以用的视频素材网站分享

对于初学者在制作短视频时&#xff0c;常常希望能够快速获取高质量的素材。如果你正计划从事短视频创作&#xff0c;这里推荐几个优秀的成品素材网站&#xff0c;希望能对你有所帮助。 首先推荐的是蛙学网 作为国内用户首选的成品视频素材平台之一。这里提供丰富的视频素材库&…

关于各环境配置表数据同步的一种思路

诸如菜单、按钮、权限等同步到各个环境往往通过手动获取语句的方式&#xff0c;如果是树状结构配置&#xff0c;很可能存在主键冲突。虽然可以借助数据同步工具&#xff0c;但是依然比较麻烦&#xff0c;需要勾选数据等。 其解决方案思路是&#xff1a; 如果各环境表配置同步…

SM2258XT量产工具,SM2258XT开卡三星SSV4颗粒成功分享,SM2259XT量产参考教程,威刚ADATA SP580开卡记录

前两天拆了笔记本上的威刚ADATA SP580 240GB&#xff0c;准备做移动硬盘用&#xff0c;装入移动硬盘盒之后接入电脑&#xff0c;发现系统可认盘&#xff0c;SMART显示正常&#xff0c;Windows的磁盘管理能显示正确容量&#xff0c;但处于未初始化状态&#xff0c;且始终无法初始…

english-works

前奏&#xff08;prelude&#xff09;&#xff1a; To build up our body, our school sports meeting was held on our play ground last Thursday. All the students in my class took an active part in sports meeting. It began with an opening ceremony on the play g…

装载问题(回溯法)

#include<iostream> using namespace std; int n;//货物的数量 int c;//轮船的总的载重量 int cw;//轮船当前的载重量 int r;//货物的总重量 int w[1000];//n个货物各自的重量 int x[1000];//当前最优解 int bestx[1000];//最优解 int bestw;//货物的最优载重量 void Bac…

扬帆起航:在Docker Swarm中部署Flask应用程序的终极指南

&#x1f433; 扬帆起航&#xff1a;在Docker Swarm中部署Flask应用程序的终极指南 &#x1f6e0;️ Docker Swarm为容器化应用提供了一个集群管理系统&#xff0c;允许你将多个Docker主机当作一个虚拟的单一主机来管理。当你想要扩展你的Flask应用程序&#xff0c;或者需要高…

单调队列优化DP——AcWing 135. 最大子序和

单调队列优化DP 定义 单调队列优化DP是一种在动态规划&#xff08;Dynamic Programming, DP&#xff09;中应用的数据结构优化方法。它利用单调队列&#xff08;Monotonic Queue&#xff09;这一数据结构来高效维护一个区间内的最值&#xff08;通常是最大值或最小值&#xf…

C++输出彩色方块

1.使用方法 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0xab); ———————————————————————————————————————— 0 黑色 1 蓝色 2 绿色 3 湖蓝色 4 红色 5 紫色 6 黄色 7 白色 8 灰色 9 …

QT事件处理及实例(鼠标事件、键盘事件、事件过滤)

这篇文章通过鼠标事件、键盘事件和事件过滤的三个实例介绍事件处理的实现。 鼠标事件及实例 鼠标事件包括鼠标的移动、按下、松开、单击和双击等。 创建一个MouseEvent项目&#xff0c;通过项目介绍如何获得和处理鼠标事件。程序效果如下图所示。 界面布局代码如下&#xff…