【Linux系统】—— vim 的使用

【Linux系统】—— vim 的使用

  • 1 vim 的基本概念
  • 2 vim 的多模式
  • 3 命令模式下的命令集
    • 3.1 进入/退出其他模式
    • 3.2 光标移动命令集
    • 3.3 复制/剪切/粘贴/删除命令集
    • 3.4 撤销命令集
    • 3.5 查找命令集
    • 3.6 替换命令集
    • 3.7 进入与退出替换模式
  • 4 批量化编译
  • 5 底行模式
  • 6 vim 小技巧
  • 7 vim简单配置

1 vim 的基本概念

  vi/vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。本文统一按照 vim 来进行讲解。

在这里插入图片描述

  
  

2 vim 的多模式

  vim 有多种模式,本文介绍五种模式,我们主要掌握的是以下三种:命令模式(command mode)、插入模式(Insert mode)、底行模式(last line mode)

各个模式的功能区分如下;

  • 命令(正常/普通)模式(Normal mode)
    • 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式。
  • 插入模式(Insert mode)
    • 只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
  • 底行模式(last line mode)
    • 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,「shift 」+ 「 : 」即可进入该模式。要查看你的所有模式:打开 vim,底行模式直接输入 :help vim-modes

  

在这里插入图片描述

  
  

3 命令模式下的命令集

  我们打开 vim 编辑器,默认所处的模式就是命令模式
  在命令模式下,用户可以输入各种命令来执行不同的编辑操作,如移动光标、复制粘贴文本、删除文本、撤销操作等。这些命令通常是通过键盘上的快捷键来实现的,使得用户可以快速高效地进行文本编辑。
  这也是为什么我们一打开 vim 输入代码,vim 却没反应,因为命令模式下输入的所有东西都被认为是命令

  命令模式的核心作用就是帮助我们快速编辑
  

3.1 进入/退出其他模式

  命令模式是所有模式的纽带,从一个模式转换至另一个模式往往需要从旧模式退回至命令模式,再从命令模式进入新模式。

  • 「i」:进入插入模式「insert mode」,按 “i” 进入插入模式后是从光标当前位置开始输入文字;
  • 「a」:进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 「o」:进入插入模式后,是插入新的一行,从行首开始输入文字。
  • 「 : 」:进入底行模式
  • 「R」:进入替换模式
  • 「ctrl」+「v」:进入视图模式
  • 「esc」:从任何模式退回命令模式

  小贴士:在 vim 中,当你不知道自己处于什么模式时,无脑按「esc」退回到命令模式。

  

3.2 光标移动命令集

  在 vim 中,光标可是一个很重要的概念,因为光标在哪里就表示你在哪进行编辑,下面我们就来学习如何快速移动光标


  • 「gg」:光标跳转至文本开始
  • 「G」:光标跳转至文本结尾
  • 「数字n」 + 「 G」:光标跳转至文本第 n 行

  • 「$」:光标跳转至所在行行末
  • 「^」:光标跳转至所在行行首
  • 「数字n」 + 「 $ 」:从光标所在行开始计算,光标移动到的第n行的行尾
  • 「数字n」 + 「 ^ 」:移动到光标所在行的第 n 个字符

  • 「h」/「j」/「k」/「l」:分别控制光标左、下、上、右移一格(上下左右键也可,但是 h j k l 更加规范)
  • 「数字n」 + 「h」/「j」/「k」/「l」:分别控制光标向左、下、上、有移动 n 格

  • 「w」:光标跳到下一个单词开头
  • 「b」:光标跳到上一个单词开头
  • 「e」:光标跳到下一个单词结尾
  • 「数字n」 + 「w」:光标向右跳过 n 个单词,跳到单词开头
  • 「数字n」 + 「b」:光标向左跳过 n 个单词,跳到单词开头
  • 「数字n」 + 「e」:光标向右跳过 n 个单词,跳到单词结尾

  • 「ctrl」+「b」:屏幕往“后”移动一页
  • 「ctrl」+「f」:屏幕往“前”移动一页
  • 「ctrl」+「u」:屏幕往“后”移动半页
  • 「ctrl」+「d」:屏幕往“前”移动半页

  小贴士:与光标有关的命令大多都可以加上数字,当觉得该指令光标移动太慢时,可以试着加上数字。

  

3.3 复制/剪切/粘贴/删除命令集

  • 「yy」:复制当前行
  • 「p」:在光标所在的下一行进行粘贴
  • 「数字n」 + 「 yy 」:复制从光标所在行开始向下数共n行。
  • 「数字n」 + 「 p」:在光标所在的下一行开始粘贴 n 次

  • 「dd」:剪切当前行
  • 「p」:在光标所在的下一行进行粘贴
  • 「数字n」 + 「 dd 」:剪切从光标所在行开始向下数共n行。
  • 「数字n」 + 「 p」:在光标所在的下一行开始粘贴 n 次

  • 「dd」:删除当前行
  • 「数字n」 + 「 dd 」:删除从光标所在行开始向下数共n行。

  • 「x」:每按一次,删除光标所在位置的字符
  • 「数字n」 + 「 x 」:删除光标所在位置之后的n的字符
  • 「X」:每按一次,删除光标所在位置前一个的字符
  • 「数字n」 + 「 X 」:删除光标所在位置之前的n的字符
  • 「p」:在光标所在位置进行粘贴

  从上述的命令也可以看出,我们平时所说的删除在 vim 中并不是直接删除,它会将删除的内容放在一个缓冲区,按 「p」 还可以再次将他们显现出来

  

3.4 撤销命令集

  • 「u」:撤销历史操作
  • 「ctrl」+「r」:撤销「u」操作

  一旦退出文件编辑,无法再进行撤销了。但如果只是保存,没有退出文件编辑,可以撤销
  

3.5 查找命令集

  • 「#」:查找光标所在位置的单词,按 「n」 向上跳转至上一个单词

  

3.6 替换命令集

  • 「r」 + 「指定字符#」:将光标所在处的字符替换为#
  • 「数字n」 + 「 r 」 + 「指定字符#」:将光标所在处开始的n个字符替换为#

  • 「~」:将小写字母替换为大写字母,将大写字母切换为小写字母;即大小写切换

  

3.7 进入与退出替换模式

  • 「R」 :进入替换模式,在替换模式下,输入的内容以覆盖式的形式输入,即可完成替换
  • 「esc」 :退出替换模式,回到命令模式
R
esc
命令模式
替换模式

  
  

4 批量化编译

  如果想对代码进行批量化编译,比如对代码进行批量化注释,我们要在插入模式下要一行行加 “//”,难免太过繁琐。我们可以利用视图模式进行批量化注释
  


进入与退出视图模式:

  • 「ctrl」+「v」:进入视图模式
  • 「esc」 :退出视图模式,回到命令模式
ctrl + v
esc
命令模式
视图模式

  


批量化编译步骤:

  • 「ctrl 」+ 「v」 进入视图模式
  • 进行区域选择,此时前面学习的命令都可以用,如:「h」/「j」/「k」/「l」、「数字n」+「 G」
  • 进入插入模式,按 「shift」+「i」(「I」) 可直接从视图模式进如插入模式
  • 进行编辑,如:想批量化注释就在该行前面输入"//"
  • 按「esc」返回命令模式
  • 完成批量化编译

  

ctrl + v
相应指令
I
esc
命令模式
视图模式
进行区域选择
进入插入模式
编辑代码
回到命令模式
完成代码的批量化编辑

  

动图演示:
  在这里插入图片描述

  


批量化删除:

  • 「ctrl 」+ 「v」 进入视图模式
  • 进行区域选择,此时前面学习的命令都可以用,如:「h」/「j」/「k」/「l」、「数字n」+「 G」
  • 「d」 进行删除
  • 完成批量化删除

  

ctrl + v
相应指令
命令模式
视图模式
进行区域选择
进行删除
完成代码的批量化编辑

  

动图演示:

在这里插入图片描述

  
  

5 底行模式

进入与退出底行模式:

  • 「 :」:进入底行模式
  • 「esc」 :退出底行模式,回到命令模式
:
esc
命令模式
底行模式

  


保存退出:

  • 「w」:保存文件
  • 「q」:退出vim,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim
  • 「wq」:保存并退出vim,后面可以加「!」表示强制

执行外部命令:

  • 「!」+「(Linux)命令」:在不退出vim的情况下执行相应命令。执行完后按任意键继续

批量化替换:

  • 「%s」 +「/」+「dst」+「/」+「src」+「/」:将dst批量化替换成src

显示行号:

  • 「set nu」:显示行号

查找:

  • 「/」+「关键字」:查找你想要的字符,如果第一次不是你想要的,可以一直按==「n」==往后继续查找
  • 「?」+==「关键字」查找你想要的字符,如果第一次不是你想要的,可以一直按「n」==往前继续查找

  

  「vs」 + 「目标文件」:在不关闭当前文件的前提下打开目标文件,进入分屏操作
  在这里插入图片描述
  分屏可以分多屏
  进入分屏模式后;光标在哪个窗口下,表示我们正在操作哪一个窗口

  • 「ctrl」 + 「ww」光标跳转至下一个窗口

  
  

6 vim 小技巧

  • 可以用 vim 直接打开一个新文件,打开新文件后什么都不写直接退出,该文件不会被创建;打开文件后什么都不写,保存退出,该文件会被创建
  • 用 vim 打开文件时,光标自动定位到上一次退出时光标所在位置
  • 用 vim 打开文件时,可以在后面加上==「+行号」==,可将光标直接定位到该行
    • 例如:提示22行代码有错误,我们可以用这个小技巧直接跳转到22行

在这里插入图片描述

  
  

7 vim简单配置

  .vimrc是 vim 的配置文件,启动 vim 时,都会先执行 .vimrc 的文件。我们可以通过修改 .vimrc 文件来对vim进行简单的配置

  在目录 /etc/ 下面,有个名为 vimrc 的文件,这是系统中公共的 vim 配置文件,对所有用户都有效。

  但这里建议不要修改根目录下的 vimrc 文件,修改根目录下的 vimrc 文件会在全局生效,相当于这台机器所有用户都用这个配置
  做vim配置,我们推荐只在自己用户下配置,只配置自己的vim。我们可以在自己用户的家目录下建立私有的配置文件,命名为:.vimrc

常用配置选项:

  • 显示行号:set nu
  • 设置语法高亮: syntax on
  • 设置缩进的空格数为4: set shiftwidth=4

  
  
  
  


  好啦,本期关于vim的使用就介绍到这里啦,希望本期博客能对你有所帮助。同时,如果有错误的地方请多多指正,让我们在 Linux 的学习路上一起进步!

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

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

相关文章

nginx负载均衡-基于端口的负载均衡(一)

注意: (1) 做负载均衡技术至少需要三台服务器:一台独立的负载均衡器,两台web服务器做集群 一、nginx分别代理后端web1 和 web2的三台虚拟主机 1、web1(nginx-10.0.0.7)配置基于端口的虚拟主机 [rootOldboy extra]# …

HTML5实现好看的博客网站、通用大作业网页模板源码

HTML5实现好看的博客网站、通用大作业网页模板源码 前言一、设计来源1.1 主界面1.2 列表界面1.3 文章界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的博客网站、通用大作业网页模板源码,博客网站源码,HTML模板源码&#xff0…

微调神经机器翻译模型全流程

MBART: Multilingual Denoising Pre-training for Neural Machine Translation 模型下载 mBART 是一个基于序列到序列的去噪自编码器,使用 BART 目标在多种语言的大规模单语语料库上进行预训练。mBART 是首批通过去噪完整文本在多种语言上预训练序列到序列模型的方…

linux-28 文本管理(一)文本查看,cat,tac,more,less,head,tail

之前提到过linux的几个重要哲学思想,使用纯文本文件保存软件的配置信息是其中之一,所以大多数情况下,我们对整个系统的操作,都是通过编辑它的配置文件来完成,那也就意味着,处理文本文件是我们作为系统管理员…

基于Piquasso的光量子计算机的模拟与编程

一、引言 在科技飞速发展的当下,量子计算作为前沿领域,正以前所未有的态势蓬勃崛起。它凭借独特的量子力学原理,为解决诸多经典计算难以攻克的复杂问题提供了全新路径。从优化物流配送网络,以实现资源高效调配,到药物分子结构的精准模拟,加速新药研发进程;从金融风险的…

该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。

问题已解决 问题回顾: 解决方法一(大部分都是这个原因): 首先先检查是否打开了多个VMware应用程序,如果打开了关掉所有vm重开即可,如果不确定后台是否多开可以去任务管理器查看关闭 解决方法二(…

计算机网络 —— 网络编程(TCP)

计算机网络 —— 网络编程(TCP) TCP和UDP的区别TCP (Transmission Control Protocol)UDP (User Datagram Protocol) 前期准备listen (服务端)函数原型返回值使用示例注意事项 accpect (服务端)函数原型返回…

Elasticsearch学习(2) :DSL和RestClient实现搜索文档

之前的学习中——Elasticsearch学习(1) ,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以这篇我们研究下elasticsearch的数据搜索功能。我们分别使用DSL(Domain Specif…

备战蓝桥杯:树的存储与遍历(dfs和bfs)

树的概念 树的逻辑结构是树形结构,和我们之前的线性结构又不太一样了,是一种一对多的关系 树的结点分为根节点,叶子结点(没有分支的结点) 以及分支结点 从上往下看,每个结点都有0个或多个后继 从下往上…

欧拉公式和傅里叶变换

注:英文引文机翻,未校。 如有内容异常,请看原文。 Euler’s Formula and Fourier Transform Posted byczxttkl October 7, 2018 Euler’s formula states that e i x cos ⁡ x i sin ⁡ x e^{ix} \cos{x} i \sin{x} eixcosxisinx. When…

《零基础Go语言算法实战》【题目 2-22】Go 调度器优先调度问题

《零基础Go语言算法实战》 【题目 2-22】Go 调度器优先调度问题 下面代码的输出是什么?请说明原因。 package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) wg : sync.WaitGroup{} wg.Add(10)…

解读若依微服务架构图:架构总览、核心模块解析、消息与任务处理、数据存储与缓存、监控与日志

文章目录 1. 引言2. 架构总览3. 核心模块解析3.1 服务注册与配置中心Nacos:微服务的中枢 3.2 网关层ruoyi-gateway:服务的统一入口 3.3 核心业务服务3.4 认证服务ruoyi-auth:认证与授权的守护者 3.5 异构服务整合Sidecar:连接异构…

Rank-Analysis——LOL 排位战绩查询分析器

项目地址: https://github.com/wnzzer/lol-rank-record-analysis 项目采用 Golang electron lol 战绩查询,一键查询你的混子队友! 很早以前就想做这个,最近学了学前端的内容,就拿这个练练手,后端也是新学…

el-table自定义按钮控制扩展expand

需求:自定义按钮实现表格扩展内容的展开和收起,实现如下: 将type“expand”的表格列的宽度设置为width"1",让该操作列不展示出来,然后通过ref动态调用组件的内部方法toggleRowExpansion(row, row.expanded)控…

FFmpeg入门

在音视频处理领域,有一款神器级的工具横扫开发者圈,那就是 FFmpeg。它被誉为“音视频处理的瑞士军刀”,凭借强大的功能和开源的特性成为众多开发者和媒体从业者的首选。今天,我们就来聊聊 FFmpeg 的入门使用,带你轻松开…

计算机网络 网络层 2

IP协议: Ip数据报的格式: 首部:分为固定部分 和 可变部分 固定部分是20B 版本:表明了是IPV4还是IPV6 首部长度:单位是 4B,表示的范围是(5~15)*4B 填充:全0,,让首部变…

【Java计算机毕业设计】基于SSM旅游景区网络购票系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

后端技术选型 sa-token校验学习 中 文档学习

目录 依赖 配置文件 登录验证 登录与注销 Cookie 自动注入 前后端分离(无 Cookie 模式) 何为 Cookie 何为无 Cookie 模式? 解决方案 1、后端将 token 返回到前端 2、前端将 token 提交到后端 其它解决方案? 自定义 Token 前缀 [ 记住我 ] 模式 前后端…

量子计算:从薛定谔的猫到你的生活

文章背景 说到量子计算,不少人觉得它神秘又遥不可及。其实,它只是量子物理学的一个“应用小分支”。它的核心在于量子比特的“叠加”和“纠缠”,这些听上去像科幻小说的概念,却为计算世界开辟了一片全新的天地。如果经典计算是“…

TPS61022 PFM的机制以及TPS61xxx转换器的PFM与PWM之间的负载阈值

引言 TI 的大多数 TPS61xxx 低压升压转换器都配备了 PSM(省电模式),以帮助提高轻负载效率。但是,当它处于重负载状态时,输出纹波通常会高于 PWM。此外,PSM 和 PWM 之间的负载电流阈值不会直观地写入数据表中…