Linux笔记---vim的使用

1. vim的基本概念

Vim是一款功能强大的文本编辑器,它起源于Unix系统的vi编辑器,并在其基础上进行了许多改进和增强。

Vim以其高效的键盘操作、高度的可定制性和强大的文本处理能力而闻名,尤其受程序员和系统管理员的欢迎。

Vim支持多种模式,包括普通模式、插入模式、末行(底行/命令)模式、替换模式和可视模式等,每个模式都有其特定的功能和操作方式。

上面的5种比较常用,而其中最重要的就是普通,插入,末行三个模式。

下面,我们就逐个介绍这些模式的用处和使用方式。

2. vim的模式

2.1 普通模式

普通模式也称命令模式,是vim打开之后的默认模式,在该模式下我们不能直接通过键盘输入或删除,但可以通过命令来对文本进行快速的编辑。

光标移动:

「h」/「j」/「k」/「l」:分别控制光标左、下、上、右移一格(上下左右键也可,但是hjkl更加正规)

「数字n」+「h」/「j」/「k」/「l」:分别控制光标左、下、上、右移n格


[gg]:移动到文本开始

「ctrl」+「g」:列出光标所在行的行号

[G]:移动到文本末端

「数字n」+「G」:移动到文本的第n行


「 $ 」:移动到光标所在行的“行尾”

「数字n」+「 $ 」:移动到光标所在行开始计算的第n行的“行尾”

「^ 」:移动到光标所在行的“行首”

「数字n」+「 ^ 」:移动到光标所在行的第n个字符


「w」:光标跳到下个字(单词或特殊字符)的开头

「e」:光标跳到下个字的字尾

「b」:光标回到上个字的开头
「ctrl」+「b」:屏幕往“后”移动一页

「ctrl」+「f」:屏幕往“前”移动一页

「ctrl」+「u」:屏幕往“后”移动半页

「ctrl」+「d」:屏幕往“前”移动半页

删除/剪切/复制/粘贴:

「x」:删除光标所在位置的一个字符

「数字n」+「x」:删除光标所在位置及之后的共n个字符

「X」:大写的X,删除光标所在位置之前一个字符

「数字n」+「X」:删除光标所在位置之前n个字符


「dd」:剪切光标所在行

「数字n」+「dd」:从光标所在行开始剪切n行

「cw」:剪切光标所在处到所在字的字尾的内容

「c」+「数字n」+「w」:剪切n个字


「yw」:将光标所在之处到字尾的字符复制到缓冲区中

「数字n」+「yw」:复制n个字到缓冲区

「yy」:复制光标所在行到缓冲区

「数字n」+「yy」:复制从光标所在行开始向下数共n行。


「p」:将缓冲区内的字符贴到光标所在位置(粘贴)。

替换:

「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止(进入替换模式)。 

撤销:

「u」:撤销(相当于图形化界面编辑器的左旋箭头)

「ctrl + r」: 撤销的恢复(相当于图形化界面编辑器的右旋箭头)

2.2 插入模式

在普通模式下按 "a/i/o" 即可进入插入模式,在该模式下可以像记事本一样对文本进行编辑。

此模式下,左下角会显示"-- Insert --":

「i」:直接进入插入模式

「a」:进入插入模式并将光标跳转到下一个字符

「o」:进入插入模式并新开一行(相当于移动到行尾并回车)

2.3 末行模式

在普通模式下按 ":" ,即 "shift + ;" 即可进入末行模式。

此时左下角会显示 ":" ,并且光标会自动跳转到 ":" 之后,我们就可以在冒号后输入命令。

Vim的末行模式(Last Line Mode),也称为命令行模式,是Vim编辑器中的一种模式,允许用户输入一系列的命令来执行文件的保存、退出、搜索、替换等操作。

在末行模式下,用户可以执行比命令模式更多的复杂操作,这些操作通常涉及到对文件内容的全局修改或者对Vim本身的配置调整。

该模式下命令十分多,大多是对vim进行配置的,我们推荐使用自动配置的插件进行配置,所以这里不多介绍。

常用命令:

「w」: 保存文件

「q」:退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim
「wq」:保存+退出

「set nu」: 在文件中的每一行前面列出行号

「数字n」:跳转到目标行号

「/」+「关键字」: 从光标位置向后依次查找关键字,输入并回车之后,每按一下「n」键会进行一次查找(光标移动到指定关键字的位置)

「?」+「关键字」从光标位置向前依次查找关键字,输入并回车之后,每按一下「n」键会进行一次查找(光标移动到指定关键字的位置)

「s/要被替换的内容/替换后的内容/」替换光标所在行的文本

「%s/要被替换的内容/替换后的内容/」替换整个文件中的文本

「!」+「外部命令」:执行外部操作系统的命令,例如

 分割窗口:

「sp」+「文件名」:水平分割窗口,在不关闭当前文件的情况下再打开一个文件,例如

「vsp」+「文件名」:垂直分割窗口,在不关闭当前文件的情况下再打开一个文件,例如

在多窗口中,光标在哪个窗口下,操作的就是哪个窗口,两个窗口是完全独立的,输入命令只会对当前所在的窗口生效。

窗口切换:

下面这些命令是在普通模式下使用的。

「Ctrl + w」+「h」:移动到左侧的窗口。

「Ctrl + w」+「j」:移动到下方的窗口。

「Ctrl + w」+「k」:移动到上方的窗口。

「Ctrl + w」+「l」:移动到右侧的窗口。

「Ctrl + w」+「w」:在所有分割的窗口中循环切换

「Ctrl + w」+「Ctrl + w」:效果与上一条相同,但是方便连续切换

2.4 可视模式

 在普通模式下按「Shitf/Ctrl」+「v」,即可进入可视模式,该模式下可对文本进行批量选中。

其中「Shitf」+「v」进入行选中(visual line),「Ctrl」+「v」进入块选中(visual block)。

行选中:

以行为单位选中(默认选中当前行,上下键阔选),选中之后可执行「d」(删除)、「y」(复制)、「>」(增加缩进)、「<」(减少缩进)等命令。

块选中:

以字符块为单位选中(默认选中光标所在字符,上下左右键阔选),选中之后可执行「d」(删除)、「y」(复制)、「c」(更改)等命令。


可视模式常用于批量化注释

对要加注释的地方进行块选中之后,按「Shitf」+「i」可直接进入插入模式,不要移动光标,直接在文本中添加"//"然后按「Esc」即可批量添加注释。

3. vim的配置

vim的配置其实就是对当前用户家目录下的".vimrc"(没有就自己建一个)文件进行更改,在其中放入末行模式的命令,即可在每次打开vim时自动执行这些指令。

如果想要配置一些更高级的功能,则需要下载对应的插件,配置的好甚至可以让vim变得和编译器一样。

当然,自己配置起来会十分麻烦,这里我推荐到gitee或github上找一找自动完成vim配置的插件。

推荐:

Centos 7 : vimforcpp

ubuntu    : vimplus

 vimplus:

vimforcpp比较强一些,有自动补全功能,vimplus没有。

但是可惜vimforcpp还不支持ubuntu。 

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

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

相关文章

STM32之基本定时器TIM6和TIM7

1.定时器概念和作用 在编程任务中&#xff0c;定时器是非常常用的一个问题。当需要定时发送数据&#xff0c;定时起某个任务&#xff0c;定时做某个操作等等&#xff0c;这些都离不开定时器。本文基于以STM32F4xx系列开发板&#xff0c;介绍一下基本定时器。 2.基本定时器TIM…

基于Ubuntu24.04,下载并编译Android12系统源码 (二)

1. 前言 上篇文章&#xff0c;我们基于Ubuntu24.04&#xff0c;已经成功下载下来了Android12的源码&#xff0c;这篇文章我们会接着上文&#xff0c;基于Ubuntu24.04来编译Android源码。 2. 编译源码 2.1 了解源码编译的名词 Makefile &#xff1a; Android平台的一个编译系…

鸿蒙网络编程系列28-服务端证书锁定防范中间人攻击示例

1. TLS通讯中间人攻击及防范简介 TLS安全通讯的基础是基于对操作系统或者浏览器根证书的信任&#xff0c;如果CA证书签发机构被入侵&#xff0c;或者设备内置证书被篡改&#xff0c;都会导致TLS握手环节面临中间人攻击的风险。其实&#xff0c;这种风险被善意利用的情况还是很…

PHP企业门店订货通进销存系统小程序源码

订货通进销存系统&#xff0c;企业运营好帮手&#xff01; &#x1f4e6; 开篇&#xff1a;告别繁琐&#xff0c;企业运营新选择 嘿&#xff0c;各位企业主和创业者们&#xff01;今天我要给大家介绍一款超实用的企业运营神器——“订货通进销存系统”。在这个数字化时代&…

Docker入门之构建

Docker构建概述 Docker Build 实现了客户端-服务器架构&#xff0c;其中&#xff1a; 客户端&#xff1a;Buildx 是用于运行和管理构建的客户端和用户界面。服务器&#xff1a;BuildKit 是处理构建执行的服务器或构建器。 当您调用构建时&#xff0c;Buildx 客户端会向 Bui…

Element UI

Element ui 就是基于vue的一个ui框架,该框架基于vue开发了很多相关组件,方便我们快速开发页面。 官网: https://element.eleme.io/#/zh-CN 安装Element UI vue init webpack element(项目名)确认项目是否构建成功&#xff1a;进入到项目的根路径 执行 npm start 访问 h…

NSSCTF

[NSSRound#1 Basic]basic_check nikto扫描 nikto -h url PUT请求&#xff0c;如果不存在这个路径下的文件&#xff0c;将会创建&#xff0c;如果存在&#xff0c;会执行覆盖操作。 [NSSRound#8 Basic]MyDoor if (isset($_GET[N_S.S])) {eval($_GET[N_S.S]); } php特性&#…

形式架构定义语言(ADL)

简介 形式规范 多年来&#xff0c;学术界一直在试图通过使用与测试截然不同且更加主动的方法来确保程序语义的正确执行&#xff1a;形式化方法。研究者们认为这种方法通过更加精确、无二义性的描述来达到让程序绝对地按照设计者的思想执行的目的。这种思想早期体现在Floyd在1…

STM32之OLED驱动函数

类似51单片机中的LCD1602驱动差不多&#xff0c; 1.oled驱动代码 oled.c #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBi…

Python入门(二)编程中的“真”与“假”,单双向选择的判断

编程中的“真”与“假” 在编程中&#xff0c;这种“真”、“假”状态我们用布尔数来表示&#xff0c;“真”是True&#xff0c;“假”是False。 另一种方式&#xff0c;是通过比较运算得到。 如图&#xff0c;3赋值给a&#xff0c;1赋值给b&#xff0c;进行大小的比较。 a &g…

U9的插件开发之BE插件(1)

U9插件可分为&#xff1a;BE插件、BP插件、UI插件&#xff1b; BE(Business Entity) 简单就是指实体&#xff0c;U9的元数据。 我的案例是设置BE默认值&#xff0c;即在单据新增时&#xff0c;设置单据某一个字段的默认值&#xff0c;具体如下&#xff1a; 1.插件开发工具&a…

Linux的目录结构 常用基础命令(2)

Linux的目录结构 根目录&#xff1a; 所有分区、目录、文件等的位置起点 整个树形目录结构中&#xff0c;使用独立的一个“/”表示 常见的子目录 /root /bin /boot /dev /etc /home /var /usr /sbin 基础知识 以 . 开头的文件均为隐藏文件 路径用/分开 / 不在第一位就…

plsql 高版本用不了 expaste 插件 问题

plsql 高版本用不了 expaste 插件 问题 其实不是版本问题&#xff0c;而是高版本的咩有在用这个插件&#xff0c;在另外一个功能里面&#xff0c; 查询你要的数据&#xff0c; 选择数据&#xff0c;右键&#xff0c;点 右键 复制为表达式列表&#xff0c;即可 在空白处粘贴…

【C++】C++11基础入门

目录 一、C11发展史&#xff1a; 二、列表初始化&#xff1a; 1、初始化&#xff1a; 2、initializer_list函数&#xff1a; 三、声明&#xff1a; 1、auto自动识别类型&#xff1a; 2、decltype&#xff1a; 3、nullptr&#xff1a; 四、范围for&#xff1a; 五、STL…

vue3+vue-baidu-map-3x 实现地图定位

文档地址&#xff1a;一个是2一个是3 https://dafrok.github.io/vue-baidu-map/#/zh/index vue-baidu-map-3x 1.首先要到百度地图开放平台上建一个账号&#xff0c;如果有百度账号可以直接登录百度地图-百万开发者首选的地图服务商,提供专属的行业解决方案 2.点击控制台&am…

V2X介绍

文章目录 什么是V2XV2X的发展史早期的DSRC后起之秀C-V2XC-V2X 和DSRC 两者的对比 什么是V2X 所谓V2X&#xff0c;与流行的B2B、B2C如出一辙&#xff0c;意为vehicle to everything&#xff0c;即车对外界的信息交换。车联网通过整合全球定位系统&#xff08;GPS&#xff09;导…

C#使用log4net结合sqlite数据库记录日志

0 前言 为什么要把日志存到数据库里? 因为结构化的数据库存储的日志信息,可以写专门的软件读取历史日志信息,通过各种条件筛选,可操作性极大增强,有这方面需求的开发人员可以考虑。 为什么选择SQLite? 轻量级数据库,免安装,数据库的常用的基本功能都有,可以随程序…

如何打开/解包星露谷物语XNB文件(附软件资源)

一、什么是 XNB 文件&#xff1f; 游戏将数据、地图和纹理存储在 .xnb 这种压缩数据文件中&#xff0c;它们在游戏的 Content 文件夹中。例如&#xff0c;对话期间显示的阿比盖尔的头像来自这个文件&#xff1a; Content\Portraits\Abigail.xnb。解包这个文件&#xff0c;你会…

SIP 业务举例之 Call Forwarding - No Answer(无应答呼叫转移)

目录 1. Call Forwarding - No Answer 简介 2. RFC5359 的 Call Forwarding - No Answer 信令流程 呼转开始 呼转完成 3. Call Forwording - No Answer 过程总结 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 …

ISO21434 信息安全开发流程咨询合规内容和步骤

ISO 21434是汽车网络安全风险管理的一项国际标准&#xff0c;旨在帮助汽车制造商和供应商识别、评估和管理车辆整个生命周期中的网络安全风险。以下是ISO 21434咨询可能包含的内容以及实施咨询的方法论步骤&#xff1a; 咨询内容&#xff1a; 标准解读与培训&#xff1a;帮助…