Linux编辑器vim

news2024/11/29 4:52:24

    

本文已收录至《Linux知识与编程》专栏!
作者:ARMCSKGT
演示环境:CentOS 7 

   


目录

前言

正文

vim常用方式

进入vim

退出vim

vim基本模式及模式功能

命令模式 

插入模式

底行模式

替换模式

视图模式

配置vim

自己配置vim

自动化配置vim

最后


前言

我们在使用一款操作系统时,无论是什么系统都有属于自己默认的文本编辑器,本节将介绍Linux编辑器vim!学习完vim,我们就可以相对自由的在Linux上写代码了,最后我们会配置vim环境,搭建主要用于C/C++代码编辑的vim。


正文

vim是一款多模式编辑器,各种模式,每种模式的用法有差别,每种模式相互切换,是一个单纯的编辑器而非编译器。


vim常用方式


进入vim

指令:

vim [文件]
未配置的vim进入文本的界面
左下角显示文文本名和当前的模式

退出vim

操作:按键盘上Esc退回到命令模式(或直接Esc退回),然后使用shift+:键,右下角显示模式的位置显示冒号,这是底行模式。在底行模式下输入q退出,一般是输入wq,表示保存并退出


vim基本模式及模式功能

vim一共有12种模式,其中我们会用到的只有5种模式,常用的只有3种模式:命令模式,插入模式和底行模式!


命令模式 

切换方式:任意模式下Esc键进入!

对于未配置的vim进入后左下角是没有任何显示的,这时表示处于命令模式!

命令模式是vim的默认模式,我们使用vim打开任意文件的初始模式都是命令模式,在其他模式下如果想退回命令模式直接按Esc键即可。既然是命令模式就有许多可用的命令在后面会详细介绍!

常用命令

按键中没有提示的默认小写!

1. 移动光标类
vim可以直接用键盘上的光标来上↑,下↓,左←,右→移动,但正规的vim是用小写英文字母「h」、「j」「k」、「l」,分别控制光标左、下、上、右移一格。

h,j,k,l控制光标上下左右移动

G (或shift+g)

光标移动到文章的最后一行开头
#G (或#shift+g)光标移动到文章的第 # 行
shift + $光标移动到光标所在行的“行尾”
shift + ^光标移动到光标所在行的“行首”
w光标跳到下个字的开头
e光标跳到下个字的字尾
b光标回到上个字的开头
#|( | 是竖画线)光标移到该行的第#个位置
gg进入到文本开始
CTRL+ b屏幕往“后”移动一页
CTRL+ f屏幕往“前”移动一页
CTRL+ u屏幕往“后”移动半页
CTRL+ d屏幕往“前”移动半页
CTRL+ g显示行号和光标所在文章内容百分比(一般显示在左下角)

2.剪切复制粘贴类

dd剪切光标所在行
#dd从光标所在行开始剪切后面的 # 行 (包括光标所在行)
x每按一次,剪切光标所在位置的一个字符
#x剪切光标所在位置的“后面(包含自己在内)的 # 个字符
X(大写)每按一次,剪切光标所在位置的“前面”一个字符
#X(大写)剪切光标所在位置的“前面"的 # 个字符(不包括自己)
yw将光标所在之处到字尾的字符复制(到缓冲区中)
#yw复制#个字(到缓冲区)
yy复制光标所在行(到缓冲区)
#yy从光标所在行开始向下复制 # 行(包括光标所在行)
p将缓冲区内的字符贴到光标所在位置。(注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。)

注意:在vim中是没有特别的删除命令的,剪切后不粘贴就是删除!

3.撤销类

u撤销,撤回一步(还原到上一步操作,类似于Windows的CTRL + z)
CTRL+ r前进,撤回撤销(相当于Windows的CTRL+ y)

4.替换更改类

cw更改光标所在处的字到字尾处(相当于一个单词)
c#w更改 # 个词组
r替换光标所在处的字符
shift+ ~将光标处的字母进行大小写切换

插入模式

切换方式:命令模式下使用Insert(Ins)/i/o/a键进入!

左下角显示INSERT字样表示处于插入模式!

插入模式是我们以后进行编辑最常用的方式,只有插入模式下才能自由编辑,否则就会转换为指令!

命令模式下进入插入模式的方法:

Insert(Ins)切换为插入模式且光标停留在原位
i 键
o 键切换为插入模式并以光标的当前位在下一行重起一行空行
a 键切换为插入模式且光标向后移动一位

底行模式

切换方式:命令模式下shift+: 进入!

切换为底行模式后,左下角会显示一个待输入指令。

底行模式下也有很多指令,而且我们以后退出vim都是使用底行模式。在文章后面我们会详细介绍。

常用指令

1.设置行号指令

:set nu //开启行号显示
:set nonu //关闭行号显示

2.光标跳转指令

:# //调转到第 # 行

3.搜索字符串并高亮

:/(需要搜索的字符串)
:?(需要搜索的字符串)

 此时光标所在的高亮字符会呈现不同的高亮色,如果是使用 / 搜索的字符按n键可以让光标移向下一个高亮的字符,如果是使用 ? 搜索按n键可以让光标移动到上一个高亮字符!

  

4.底行模式执行Linux命令

:!(Linux指令)

一般我们在写代码时通过这个命令编译代码文件然后执行程序,这样我们既可以不退出vim也可以查看程序运行情况!

  

5. 指定字符串并替换

:%s/被替换的文本/替换文本/g  

6.多文件vim分屏操作

:vs 文件

vs分屏打开文件时如果没有文件vim会创建在本地一个文件,如果有该文件则可以使用Tap键自动补齐文件名。

在两个vim窗口之间切换要使用CTRL + 连续按两次w

7.保存文件

:w //将文本保存在本地

   

8.退出vim

:q //退出vim

替换模式

切换方式:命令模式下大写R进入(或shift+小写r)。

切换为替换模式后左下角会显示REPLACE字样,代表处于替换模式!

在替换模式下键盘输入的任何字符都会替换当前光标处的字符(包括空格),所以理论上替换模式也可以实现编辑但是不太方便,例如不能删除字符只能替换为空格!


视图模式

切换方式:命令模式下小写v或大写V键!

通过小写v切换为视图模式左下角显示 VISUAL 此时视图模式的选中方式为逐字符选中。

通过大写V切换的视图模式左下角显示 VISUAL LINE ,此时为逐行选中,光标所在行的整行都会被选中!

 视图模式通常用于整体替换和快速浏览文本,在代码编辑中快速注释也是通过视图模式!

视图模式代码注释小技巧

1.CTRL+ 大小写v/V,进入视图行插入文本模式

2.通过光标的移动选中需要注释的行(选择时选中两列)

3.切换为大写模式按 I (大写 i )

4.在光标原地输 // 即可完成注释!(如果要插入其他字符也是这样操作)


配置vim


之前在初步介绍时展示的都是未配置的vim,没有配置的vim非常难以使用,来写代码和文本是非常困难的!

   

我们自己可以修改vim的默认配置文件,来配置我们自己的vim,使它更符合我们的使用!

首先vim的配置文件在用户的家目录~下(每个用户只能配置自己的vim),该文件被隐藏起来了,需要使用ls -a来查看,文件名是.vimrc


自己配置vim

使用vim打开文件.vimrc文件,写入配置指令!

保存并退出,再次打开vim查看文本文件!

 

 

其他配置:

1.自动缩进:set autoindent
2.突出显示当前行: set cursorline

还有其他很多选项,大家有需要可以在网上搜索进行详细的个性化配置!


 自动化配置vim

对于手动配置vim好像非常麻烦,而一般我们配置vim是为了写代码,所以网上有一套非常成熟的配置,可以下载到本地使用!这就是VimForCpp

可以在giett官网搜索VimForCpp(网页:VimForCpp: 快速将vim打造成c++ IDE (gitee.com))

 进入主页向下翻就能看到步骤和介绍!

这里感谢这位大佬提供的vim配置方案!

   

  

安装步骤及命令:

1.在 shell 中执行以下指令(命令较长请将下列命令复制完整)

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

2.需要按照提示输入 root 密码


注意: 这个自动安装的方法,目前仅适用于 Centos 7.6 ,其他平台可能会出现安装失败的情况!


最后

Linux编辑器vim的介绍到这里就结束了,相信vim的学习会为大家打开Linux编程的大门,让我们在Linux中更加畅快的进行开发!

本次Linux编辑器vim知识就介绍到这里啦,希望能够尽可能帮助到大家。

如果文章中有瑕疵,还请各位大佬细心点评和留言,我将立即修补错误,谢谢!

 🌟其他文章阅读推荐🌟

Linux 软件包管理器 yum-CSDN博客

Linux基础指令-CSDN博客

Linux权限的基本知识-CSDN博客

🌹欢迎读者多多浏览多多支持!🌹

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

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

相关文章

选择排序基本概念

选择排序基本概念1.选择排序1.1 基本概念1.2 选择排序执行步骤有1.3 对于5个元素的值步骤次数1.4 选择排序大O记法表示2. 将[4,2,7,1,3]进行选择排序 【实战】2.1 第一次轮回步骤2.2 第二次轮回步骤2.3 第三次轮回步骤2.4 第四次轮回步骤3.选择排序代码实现3.1 根据最小值排序3…

TypeScript快速入门

TypeScript快速入门1.TypeScript介绍1.1.TypeScript为什么要为JS添加类型支持1.2.TypeScript相比JS优势2.TypeScript初体验2.1.安装编译TS的工具包2.2.编译并运行TS代码2.3.简化运行TS代码3.TypeScript常用类型3.1.类型注解3.2.常用基础类型3.3.原始类型 number/string/boolean…

前端基础html css js

html&#xff1a;框架 css&#xff1a;美化 jp&#xff1a;交互 HTML 1.基础标签 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>这是我的滴滴滴一个网页</title></head><body><h1>一号 标题&…

Pygame显示文字

使用Pygame显示文字的步骤如图1所示。图1 显示文字的步骤1 Pygame的初始化通过以下代码实现Pygame的初始化。import pygame pygame.init()其中&#xff0c;第1行代码的作用是在程序中导入pygame模块&#xff1b;第2行代码的作用是实现pygame的初始化。2 屏幕的创建使用如下代码…

CacheLib 原理说明

CacheLib 介绍 CacheLib 是 facebook 开源的一个用于访问和管理缓存数据的 C 库。它是一个线程安全的 API&#xff0c;使开发人员能够构建和自定义可扩展的并发缓存。 主要功能&#xff1a; 实现了针对 DRAM 和 NVM 的混合缓存&#xff0c;可以将从 DRAM 驱逐的缓存数据持久…

ESP8266 + STC15基于AT指令通过TCP通讯协议控制IO状态

ESP8266 + STC15基于AT指令通过TCP通讯协议控制IO状态 📌ESP8266 AT固件基于安信可AT固件,相关刷AT固件可以参考《NodeMCU-刷写AT固件》当然WIFI模块也可以是esp01. STC15 单片机采用的是:STC15F2K60S2 晶振频率采用内部:22.1184MHz🌼功能介绍 通过电脑端的网络调试助手…

【C++】类和对象(第一篇)

文章目录1. 面向过程和面向对象初步认识2.类的引入3.类的定义3.1 类的两种定义方式3.2 成员变量命名规则建议4. 类的访问限定符及封装4.1 访问限定符4.2 封装5. 类的作用域6. 类的实例化7. 类对象模型7.1 类对象大小的计算7.2 类对象的存储方式猜测7.3 结构体内存对齐规则复习8…

JDK15 新特性详解,2020-09-15 正式发布

预览版&#xff1a;该功能在当前版本可以使用&#xff0c;如果效果不是很好的话&#xff0c;可能以后的其他版本就会删去该功能。 最终版&#xff1a;该功能在之前版本效果很好&#xff0c;之后的每个版本中都会存在该功能。 Java 5 中的泛型&#xff0c;Java 8 中的 Lambda …

Linux云服务器下怎么重置MySQL8.0数据库密码

文章目录一、修改my.cnf配置文件为mysql免登陆二、免密登陆mysql三.给root用户重置密码1、首先查看当前root用户相关信息&#xff0c;在mysql数据库的user表中2、把root密码置为空3、退出mysql&#xff0c;删除/etc/my.cnf文件中添加进去的skip-grant-tables 重启mysql服务4、使…

FPGA实现AD9708和AD9280波形收发输出HDMI模拟示波器,串口协议帧控制显示,提供工程源码和技术支持

目录1、AD9708芯片解读和电路设计2、AD9280芯片解读和电路设计3、FPGA设计框架4、AD9708波形生成并发送5、AD9280采集接收波形6、HDMI波形显示算法7、串口协议帧控制波形显示8、vivado工程9、上板调试验证10、福利&#xff1a;工程源码获取1、AD9708芯片解读和电路设计 AD9708…

85024A是德科技keysight高频探头

附加功能&#xff1a; 易于执行在线测量出色的频率响应和单位增益探头灵敏度高低失真度规格输入电容&#xff08;在 500 MHz 时&#xff09;&#xff1a;< 0.7pF&#xff08;标称值&#xff09;输入电阻&#xff1a;1 MΩ&#xff08;标称值&#xff09;带宽&#xff1a;30…

2月8日刷题总结

写题一点思路也没有&#xff0c;题解也不能看得很懂。所以系统性的学习DP ing……跟着进度来&#xff0c;因此刷了一些已经刷过的类型的题&#xff08;也算再次熟悉一下&#xff09;P1077 [NOIP2012 普及组] 摆花题目描述小明的花店新开张&#xff0c;为了吸引顾客&#xff0c;…

力扣SQL刷题5

目录597. 好友申请 I&#xff1a;总体通过率602. 好友申请 II &#xff1a;谁有最多的好友603. 连续空余座位1045. 买下所有产品的客户597. 好友申请 I&#xff1a;总体通过率 官方讲的题目太繁琐了&#xff0c;大概就是&#xff08;表2中列1列2不全相同的行数&#xff09;/&a…

测试开发之Vue学习笔记-Vue路由

Vue路由18. Vue-路由基础安装 cnpm install --save vue-router官方文档&#xff1a;https://router.vuejs.org/zh/src/main.js中&#xff08;1&#xff09;引入VueRouter&#xff1a;import VueRouter from "vue-router"&#xff08;2&#xff09;使用VueRouter&…

《知行合一王阳明》读书笔记

《知行合一王阳明》用通俗易懂的语言介绍了王阳明一生的传奇经历和他的心学的核心思想。这篇读后感主要介绍一下我对心学的理解。在我看来&#xff0c;心学最本质的要求是“致良知”&#xff0c;最核心的方法论是“知行合一”。致良知是说要遵从自己的本心。王阳明相信人性本善…

(蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第1天(基础算法-上 专题)】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有75天

&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6; 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&a…

兔年新佳绩,思迈特软件获奖喜讯纷至沓来

近年来&#xff0c;随着大数据、云计算、人工智能、5G等技术加速创新&#xff0c;越来越多的ToB企业开始下沉探索边际&#xff0c;纵深业务服务场景&#xff0c;通过技术与行业的深度融合&#xff0c;为客户提供全面的转型服务&#xff0c;尽一切可能创造客户价值和商业价值。思…

【C++: list的模拟实现】

目录 1 list的简单回顾 2 类中成员变量的声明 3 __list_iterator 中运算符重载 4 list中的迭代器 5 list中增删查改以及clear 6 const迭代器 6.1 __list_iterator的重新实现 6.2 list类的巧妙修改 7 构造函数&&拷贝构造&&赋值运算符重载 8 反向迭代器…

金三银四丨黑蛋老师带你剖析-二进制漏洞

作者&#xff1a;黑蛋二进制漏洞岗上篇文章我们初步了解了一下简历投递方式以及二进制方向相关逆向岗位的要求&#xff0c;今天我们就来看看二进制漏洞相关的岗位&#xff0c;当然&#xff0c;漏洞岗位除了分不同平台&#xff0c;也有漏洞挖掘岗和漏洞分析利用岗。同样&#xf…

[人工智能-综述-11]:ChatGPT, 通用人工智能还是要来了

该来的还是要来的&#xff01;补充信息&#xff1a;ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型&#xff0c;一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&…