Linux编辑器vim(含vim的配置)
文章目录
- 前言
- vim的基本概念
- vim基本操作
- 进入vim
- 模式切换
- 退出vim
- vim指令
- vim命令模式指令
- vim底行模式命令
- 简单vim配置
前言
本篇文章,小编将介绍Linux编辑器–>vim以及vim的配置。
vim的基本概念
- 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除
,移动复制某区段及进入Insert mode
下,或者到last line mode
- 插入模式(Insert mode)
-只有在Insert mode
下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。 - 底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim
,底行模式直接输入:help vim-modes
vim基本操作
进入vim
创建一个新的文件,如:text.c
文件
通过指令 vim text.c
即可进入vim界面
进入vim界面内你是无法进行编辑的,此时是正常模式,只有进入插入模式才可进行编辑
注意:在没有创建text.c
文件的前提下,使用指令 vim text.c
也是可以直接进入的。在退出的时候,如果直接退出,那么没有保存text.c
文件,在当前目录下,是没有text.c
文件的;如果在vim界面内保存退出,在当前目录下就可以看到text.c
文件。
模式切换
刚刚说了,刚进入vim界面是无法进行编辑,处于正常模式,所有指令都是命令
- 命令模式–>插入模式
输入a
:进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字。
输入o
:进入插入模式后,是插入新的一行,从行首开始输入文字。
输入i
:进入插入模式后,是从光标当前位置开始输入文件。
如上图所示,按完i
后,左下角会有一个-- INSERT --
字样,表示已经进入插入模式,可以进行编辑。
- 插入模式–>命令模式
按键盘左上角Esc
键即可
注意:切换到命令模式都是按Esc
键
- 命令模式–>底行模式
按下键盘shift+;
,实际上就是:
如上图所示,有一个:
,表明已进入底行模式
- 底行模式–>命令模式
按键盘左上角Esc
键即可
注意:底行模式和插入模式之间无法切换
退出vim
vim界面有些特殊,鼠标都不起作用,那么如何退出呢?
首先进入底行模式
,一下指令是退出操作:
: w
(保存当前文件): wq
(输入「wq」,存盘并退出vim): q!
(输入q!,不存盘强制退出vim)
vim指令
vim命令模式指令
- 移动光标
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」
,分别控制光标左、下、上、右移一格
按「G」
:移动到文章的最后
按「 $ 」
:移动到光标所在行的“行尾”
按「^」
:移动到光标所在行的“行首”
按「w」
:光标跳到下个字的开头
按「e」
:光标跳到下个字的字尾
按「b」
:光标回到上个字的开头
按「#l」
:光标移到该行的第#个位置,如:5l,56l
按[gg]
:进入到文本开始
按[shift+g]
:进入文本末端
按「ctrl」+「b」
:屏幕往“后”移动一页
按「ctrl」+「f」
:屏幕往“前”移动一页
按「ctrl」+「u」
:屏幕往“后”移动半页
按「ctrl」+「d」
:屏幕往“前”移动半页
-
删除文字
「x」
:每按一次,删除光标所在位置的一个字符
「#x」
:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「X」
:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」
:例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」
:删除光标所在行
「#dd」
:从光标所在行开始删除#行 -
复制
「yw」
:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」
:复制#个字到缓冲区
「yy」
:复制光标所在行到缓冲区。
「#yy」
:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」
:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
- 替换
「r」
:替换光标所在处的字符。
「R」
:替换光标所到之处的字符,直到按下「ESC」键为止。
-
撤销上一次操作
「u」
:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回
复。
「ctrl + r」
: 撤销的恢复 -
更改
「cw」
:更改光标所在处的字到字尾处
「c#w」
:例如,「c3w」表示更改3个字
- 跳到指定的行
「ctrl」+「g」
列出光标所在行的行号。
「#G」
:例如,「15G」,表示移动光标至文章的第15行行首
vim底行模式命令
-
列出行号
「set nu」
: 输入「set nu」后,会在文件中的每一行前面列出行号。 -
跳到文件中的某一行
「#」
:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。 -
查找字符
「/关键字」
: 先按「/」
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」
会往后寻找到您要的关键字为止。
「?关键字」
:先按「?
」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」
会往前寻找到您要的关键字为止。 -
保存文件
「w」
: 在冒号输入字母「w」就可以将文件保存起来 -
离开vim
「q」
:按「q」
就是退出,如果无法离开vim,可以在「q」
后跟一个「!」
强制离开vim。
「wq」
:一般建议离开时,搭配「w」
一起使用,这样在退出的时候还可以保存文件。
简单vim配置
我们在vim下写代码,会有很多问题,如:无法自动缩进,不能补齐括号等问题,在编程中带来不便。为了解决这一问题,我们需要去配置一下我们的vim,这样才能使得vim使用起来更加方便。
配置项一般都放在用户家目录下的.vimrc
文件中,.vimrc
就叫做配置文件,家目录中如果没有这个文件可以自行创建一个touch .vimrc
,然后可以将配置项写入.vimrc
文件中。
在这里,向大家简单介绍几个常见的配置:
set nu//设置行号
syntax on//语法高亮
set showmode//底部显示当前处于什么模式
set cursorline//显示行号下划线
set shiftwidth=4//设置缩进的空格数为4
……
但是,有了这些配置依然远远不够,还需要安装插件。
下面给大家展示一下我的配置好的vim:
可以自动补齐,自动缩进等,和VS没什么太大差别啦
这里的自动化配置方案读者可以私信小编,小编将为大家提供。
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=m7v059zdx3bb
相关文章:

Linux编辑器vim(含vim的配置)
文章目录 前言vim的基本概念vim基本操作进入vim模式切换退出vim vim指令vim命令模式指令vim底行模式命令 简单vim配置 前言 本篇文章,小编将介绍Linux编辑器–>vim以及vim的配置。 vim的基本概念 正常/普通/命令模式(Normal mode) 控制屏幕光标的移动…...

Oracle DG环境下的秘钥管理
今天有朋友问到1)DG环境下的秘钥管理需要注意什么,2)秘钥管理对DG的日志同步有影响吗? 对于2)的回答是明确的,没有影响。秘钥的管理和DG的redo log shipping完全是两套机制。在最新版的Oracle Key Vault常…...

【Sql Server】新手一分钟看懂在已有表基础上增加字段和说明
欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…...

亚信安慧AntDB打造开放创新的数据库生态
在当今信息化快速发展的时代背景下,亚信安慧AntDB作为一种新兴的DBMS,以其核心优势引起了行业内的广泛关注。它基于具有广泛全球影响力和繁荣社区支持的PostgreSQL(PG)内核,继承了PG的开放性与生态活力,同时在性能和稳定性方面进行…...

在Mixamo网站上,下载的动画导入unity给自己的模型添加后出错怎么解决
在Mixamo网站上,下载的动画导入unity给自己的模型添加后出错 一、在Mixamo下载的模型可以正常使用二、在自己的模型和unity自带模型上就出错1.解决方法2.解决成功 注意 一、在Mixamo下载的模型可以正常使用 二、在自己的模型和unity自带模型上就出错 1.解决方法 选…...

java servlet运输公司管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java Web运输公司管理系统是一套完善的java web信息管理系统 serlvetdaobean mvc 模式开发 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主 要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5…...
React中antd的使用技巧
1.antd的基本使用: (1).yarn add antd(2).引入样式:import antd/dist/antd.css;(3).根据文档引入组件2.antd按需引入样式 (1).yarn add react-app-rewired customize-cra babel-plugin-import(2).修改package.json,内容如下:.....…...

2024年第一篇博客
这是2024年的第一篇博客,2023年笔者经历了一连串的生活、工作、学习上的转折和调整,跌跌撞撞时光飞逝,转眼间就踏着元旦的钟声步入了2024年,前思后想、辗转反侧、犹豫再三不知道从哪里开始博客新的篇章,这个问题坦诚说…...

Nginx负载均衡下的webshell连接
一、上传AntSword-Labs-master搭建负载均衡实验环境 搭建好docker环境,并且配置好docker-compose 我的Redhat的docker版本: 查看当前环境下的文件是否正确: 接着执行docker compose up -d 拉取环境 访问成功页面: 进入docker容器…...

JAVA编程语言单词汇总
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。后来 Sun 公司被 Oracle (甲骨文)公司收购,Java 也随之成为 Ora…...

微信小程序(十七)自定义组件生命周期(根据状态栏自适配)
注释很详细,直接上代码 上一篇 新增内容: 1.获取手机状态栏的高度 2.验证attached可以修改数据 3.动态绑定样式数值 源码: myNav.js Component({lifetimes:{//相当于vue的created,因为无法更新数据被打入冷宫created(){},//相当于vue的mount…...
百度搜索智能精选是什么东西、怎么加入?
百度搜索智能精选是什么? 提问及具体展示如上图,这是白杨SEO一个好友提问的。他是觉得这个入口篇幅这么大,做宣传推广不错,问我是什么,怎么可以加入进去? 其实这就是百度搜索智能精选,只能是P…...

小程序开发平台:全功能小程序商城功能 带完整的安装代码包以及搭建教程
移动互联网的普及和用户对购物体验要求的提高,传统电商网站已经不能满足用户的需求。因此,许多商家开始将目光转向小程序商城,以提供更加便捷、高效的购物体验。然而,由于小程序开发门槛较高,许多商家和开发者对于小程…...
Vue3生命周期 VS Vue2生命周期(小记)
概念:Vue组件实例在创建时要经历一系列的初始化步骤,在此过程中Vue会在合适的时机,调用特定的函数,从而让开发者有机会在特定阶段运行自己的代码,这些特定的函数统称为:生命周期钩子。 规律: 生…...

MYSQL基本查询(CURD:创建、读取、更新、删除)
文章目录 前言一、Create1.全列插入2.指定列插入3.插入否则更新4.替换 二、Retrieve1.SELECT列2.WHERE条件3.结果排序4.筛选分页结果 三、Update四、Delete1.删除数据2.截断表 五、插入查询结果六、聚合函数 前言 操作关系型数据库的编程语言,定义了一套操作关系型…...
头歌C语言指针进阶
目录 第1关:输出若干个学生成绩中的最高分.要求用指针函数实现 任务描述 第2关:采用指针变量表示地址的方法输入输出数组中的个元素 任务描述 相关知识(略) 编程要求 第3关:用指针实现数组循环移动 任务描述 第…...
民安智库-公共健身场所满意度调研
公共健身场所作为市民锻炼身心的热门场所,其满意度情况对于提升市民生活质量具有重要意义。民安智库近期受客户委托对某市进行了一项全面的公共健身场所满意度调查,旨在了解市民的需求与期望,为改善健身环境提供依据。 在本次调研中…...

《HTML 简易速速上手小册》第3章:HTML 的列表与表格(2024 最新版)
文章目录 3.1 创建无序和有序列表(📝🌟👍 信息的时尚搭配师)3.1.1 基础示例:创建一个简单的购物清单3.1.2 案例扩展一:创建一个旅行计划清单3.1.3 案例扩展二:创建一个混合列表 3.2 …...
IBeginDragHandler,IEndDragHandler,IDragHandler拖拽接口
IBeginDragHandler, IEndDragHandler, 和 IDragHandler 是Unity的接口,用于处理拖拽相关的功能。需要引用 UnityEngine.EventSystems。 IBeginDragHandler 这个接口定义了一个方法,该方法在玩家开始拖拽一个对象时被调用。它通常用于初始化拖拽相关的变量…...
面试经典 150 题 ---- 删除排序数组中的重复项
面试经典 150 题 ---- 删除排序数组中的重复项 删除排序数组中的重复项方法一:双指针 删除排序数组中的重复项 方法一:双指针 有是一个原地修改的题目,大概率依旧是双指针。 定义 right 表示遍历数组到达的下标位置,left 指针表…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...