【Linux】编辑器的天花板vim

news2025/1/22 19:46:10

​🌠 作者:@阿亮joy.
🎆专栏:《学会Linux》
🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根
在这里插入图片描述

目录

    • 👉前言👈
    • 👉vim的基本概念👈
    • 👉命令模式👈
      • 进入插入模式
      • 进入底行模式
      • 移动光标
      • 复制粘贴
      • 删除(剪切)
      • 其他命令
    • 👉vim的配置原理👈
    • 👉vim的一键配置👈
    • 👉总结👈

👉前言👈

在 Window 环境下,我们可以在 Visual Studio 软件上编写、编译、运行和调试我们的代码,也上面可以写 C语言代码,也可以写 C++代码等等。那么这种跨语言、跨功能的软件,就叫做集成开发环境。而在 Linux 系统下,我们的开发工具是一个一个分开的,我们编写、编译和调试代码都是使用不同的工具的。那么,本篇博客就带着大家学习编写代码的工具:vim。

👉vim的基本概念👈

vim 是什么呢?vim 其实是一款功能强大,具有多种模式的编辑器。

知道了 vim 是一款编辑器,那么我们就来简单地看看如如何使用 vim 来编写 C语言代码。

vim 文件名	#创建或打开文件

在这里插入图片描述
在这里插入图片描述
以上的操作,大家都不需要做先。上图的操作,在下文我们将会学到。

在上面,我们说到 vim 是一种多模式的编辑器。那 vim 有多少中模式呢?vim 总共有 13 中模式,但是最常用的模式就只有 3 中,分别是命令模式、插入模式和底行模式。

  • 命令模式:打开 vim 之后的默认模式,在该模式下输入的所有东西都会被看做命令。退出 vim 需要输入 : wq(保存并退出)。
  • 插入模式:在该模式下才可以进行代码的编写。进入插入模式需要在命令模式下输入 i、a 或 o等等。回到命令模式,摁下 Esc 键。
  • 底行模式:在该模式下,可以进行文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。进入底行模式需要在命令模式下,摁下 :键。在底行模式下,输入:help vim-modes可以查看 vim 的所有模式。

在这里插入图片描述

命令模式是 vim 编辑器的初始模式,从该模式可以实现到任何模式的切换;而插入模式和底行模式之间不能相互切换。因为在插入模式下,任何输入的字符都被认为是编辑到某一个文件的内容,而不是命令;在底行模式下,任何输入的字符都被看做是底行命令(尽管是不合法的),两者都必修通过命令行模式才能进入对方,即需要先摁下 “Esc” 模式回到命令模式。

👉命令模式👈

命令模式的意义:使用各种命名来提高编辑效率

进入插入模式

命令功能说明
i从光标所在的位置开始插入新的字符
I从光标所在行的行首开始插入新的字符
a从光标所在位置的下一个字符开始插入新的字符
A从光标所在行的行尾开始插入新的字符
o增加一行,并将光标移动到下一行的开头开始插入新的字符
O在当前行的上面增加一行,并将光标移动到上一行的开头开始插入新的字符

进入底行模式

在命令模式下输入 “:”、“/” 或者 “?”,即可进入底行模式。在该模式下,用户输入的任何字符串都会被当成命令,会在 vim 的最下面一行显示,摁下回车键后会执行该命令。如果该字符串不是一个有效的命令,则会出现错误提示。

底行模式下的常用命令

命令功能说明
w保存文件,但不退出 vim(w:write)
w!对于只读文件,强制保存修改的内容,但不退出 vim
q退出 vim,如果文件有过修改,则必须先保存文件
q!强制退出 vim 而不保存文件
wq保存文件并退出 vim
x保存文件并退出 vim
x!强制保存文件并退出 vim
E在 vim 中创建新的文件,并为文件命名
N在本 vim 窗口中打开新的文件
w 文件名拷贝当前文件内容生成指定的文件名的文件,不退出vim
wq 文件名拷贝当前文件内容生成指定文件名的文件并退出 vim
wq! 文件名强制拷贝当前文件内容生成指定文件名的文件并退出 vim
r 文件名读入指定文件的内容插入到光标所在的位置
set nu在 vim 的每行开头处显示行号
set nonu取消行号
s/pattern1/pattern2/g将光标所在行的字符串pattern1替换为pattern2
%s/pattern1/pattern2/g将所有行的字符串pattern1替换为pattern2
g/pattern1/s/pattern2将所有行的字符串pattern1替换为pattern2
/查找匹配字符串功能,输入 “/字符串”,系统便会自动查找并突出显示所有找到的字符串,然后转到找到的第一个字符串。如果想继续向下查找,可以摁 “n” 键;向上查找则摁 “N” 键
?也可以使用 “?字符串” 来查找指定的字符串,它的使用与 “/字符串” 相似,但它是向前查找字符串
vs 文件名创建或打开文件并分屏(只有一个光标)
Ctrl + ww将光标切换到下一个文件
!Linux指令不退出 vim 执行Linux指令,再摁一下 “q” 键退出

光标的意义:选中行或者屏幕进行操作。

移动光标

命令功能说明
$将光标移动到该行的行尾
^将光标移动到该行的第一个非空字符处
0将光标移动到该行的行首
G将光标移动到文件最后一行的第一个非空字符处
nG将光标移动到文件第n行的第一个非空字符处
gg将光标移动到文件第一行的第一个非空字符处
w将光标向后移动一个字
nw将光标向后移动n个字
b将光标向前移动一个字
nb将光标向前移动n个字
h向左移动光标
j向下移动光标
k向上移动光标
l向右移动光标
上下左右键向上下左右移动光标
Ctrl +b向上翻一页
Ctrl +f向下翻一页
Ctrl +u向上移动半页
Ctrl +d向下移动半页
Ctrl +y向上翻一行
Ctrl +e向下翻一行

老式键盘

在这里插入图片描述
在这里插入图片描述

复制粘贴

命令功能说明
yy复制光标所在行的整行内容
nyy复制从光标所在行开始向下的n行内容,n为正整数,表示复制的行数
p粘贴,将复制的内容粘贴在光标所在行的下一行
np将复制的内容粘贴n次
yw复制光标所在单词的内容
nyw复制从光标所在字开始向后的n个字

删除(剪切)

命令功能说明
dd删除光标所在行
ndd删除光标所在行及其向下n-1行
x删除光标所在位置的字符
X删除光标所在位置的前一个字符
nx删除光标所在位置及其向后的n-1个字符(不超过当前行)
nX删除光标所在位置及其向前的n-1个字符(不超过当前行)
dw删除光标所在位置的字
ndw删除光标所在位置及其向后的n-1个字
d0删除当前行光标之前的所有字符
d$删除当前行光标之后的所有字符
ndk删除光标所在行及其向上n行
ndj删除光标所在行及其向下n行

注:删除内容后,再输入粘贴命令进行粘贴。

其他命令

命令功能说明
~字符大小写切换
r替换光标所在位置的字符,如:rx是指将光标所在位置的字符替换为x
nr将光标所在位置的字符及其向后n-1个字符替换为指定字符
R替换光标所到之处的字符,直至摁下 “Esc” 键为止
u表示恢复功能,即撤销上一次的操作
Ctrl + r撤销上一次的u操作
U取消对当前行所做的所有修改
ZZ保存文档后退出 vim 编辑器
cw删除光标所在位置的字并进入插入模式
cnw删除光标所在位置的字及其向后n-1个字并进入插入模式

👉vim的配置原理👈

  • vim 的配置是一人一份的,一个用户配置的 vim 是自己的,不影响别的用户。
  • 每个人虽然用的是同一个 vim 程序,但是大家用的是不同的 vim 配置。每个用户在自己的家目录都有一个属于自己的配置文件.vimrc
  • 通过用户的家目录是没有.vimrc的,需要自己创建。
  • 所谓的 vim 基本配置,就是修改自己的.vimrc文件,不要动任何不属于自己的配置文件。

常见配置选项

我们在自己的家目录输入vim .vimrc创建 vim 的配置文件,然后再文件内输入一下配置选项。

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

以上是一些常用的配置选项,如果想要知道更加全面的 vim 配置选项,可以自行搜索 vim 配置大全。

source .vimrc	#使.vimrc配置文件生效

关于 vim 也有很多好玩的插件,如果大家想要配置的话,也可以自行搜索如何配置 vim 插件。

👉vim的一键配置👈

  1. 打开 gitee,搜索 vimforcpp并点击进去

在这里插入图片描述
2. 点击进去后,向下滑动至下图位置

在这里插入图片描述
3. 复制上图链接粘贴至 Linux 系统上,按下回车键并输入 root 密码,进行安装

在这里插入图片描述
4. 安装完成后,复制下图红色框框框住的字符串并粘贴,再按下回车键。

在这里插入图片描述
5. 以上步骤完成后,vim 的一键配置就完成了。你可以尝试用 vim 来编写 C/C++ 代码了。

在这里插入图片描述
6. 将缩进修改为 4 个空格:在家目录下输入vim .vimrc打开.vimrc配置文件。在底行模式搜索 2,并将 2 全部改成 4。

在这里插入图片描述

解决无法使用 sudo 命令的问题

输入 su 指令切换成 root 用户,切换成功后,输入指令vim /etc/sudoers打开该文件。

在这里插入图片描述
注:可能不允许写入,那么我们可以输入 w! 和 q! 指令强制写入并退出。完成以上步骤,我们就能够执行 sudo 命令了。

👉总结👈

本篇博客主要讲解了 vim 编辑器,vim 编辑器三种最常用的模式,命令模式的各种命令、底行模式的一些命令以及 vim 的配置原理和一键配置等等。那么以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!谢谢大家!💖💝❣️

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

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

相关文章

14.SpringAop

1. Aop简介 AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构 OOP(Object Oriented Programming)面向对象编程 作用:在不惊动原始设计的基础上为其进行功能增强。简单的说就是在不改变方法源代码的基…

C语言必背18个经典程序

1、/*输出9*9口诀。共9行9列&#xff0c;i控制行&#xff0c;j控制列。*/ #include "stdio.h" main() {int i,j,result;for(i1;i<10;i){for(j1;j<10;j){resulti*j;printf("%d*%d%-3d",i,j,result);/*-3d表示左对齐&#xff0c;占3位*/}printf("…

数字化转型必读书籍:27个案例让小白也能搞懂以中台战略主导的数字化转型产品建设

各位茶馆的读者朋友们大家好&#xff0c;一转眼《中台产品经理宝典》一书已经上市了2年半&#xff0c;在这期间创造了近2万册的销售记录&#xff0c;并多次冲上各大网站的销售记录。 就在今年双十一还创造了当当网细分类目销量第71名的成绩&#xff0c;这对一本已经出版了2年半…

LeetCode题解 15 (5,96) 最长回文子串,不同的二叉搜索树

文章目录最长回文子串代码解答&#xff1a;不同的二叉搜索树代码解答&#xff1a;最长回文子串 首先我们应该先了解什么是回文子串: 单个字符 例如 a 这也是回文字符串 2个字符 aa 或者 bb 这也是回文字符串 3个字符 aba 或者 bab 多个字符 abba ababa 这些也被叫做回文子串 从…

【源码透视】SpringBoot的SPI机制

一、从java类加载机制说起 java中的类加载器负载加载来自文件系统、网络或者其他来源的类文件。jvm的类加载器默认使用的是双亲委派模式。三种默认的类加载器Bootstrap ClassLoader、Extension ClassLoader和System ClassLoader&#xff08;Application ClassLoader&#xff09…

开源项目 Spartacus 的 git 提交流程规范

Spartacus 开源项目由一组库组成。为了更容易知道哪个版本的库与另一个版本兼容&#xff0c;库版本在所有包中同步。 这意味着当我们要发布 1.5.0 版本时&#xff0c;我们会发布该版本下的所有库&#xff0c;即使某些库与上一个版本相比没有任何变化。 这样一来&#xff0c;我们…

NKOJ P5676 SuperGCD【超级GCD】

为什么NKOJ的题交JAVA会被keyword卡System&#xff0c;还不能用python水高精度…… 题目分析 回归正题&#xff0c;由于本题数据范围0≤A,B≤10100000 \le A,B \le 10^{10000}0≤A,B≤1010000两个100001000010000位的整数算GCD,所以用高精度欧几里得GCD的话会使得算法时间复杂…

数据治理工程师必备证书DAMA-CDGA/CDGP,含金量高

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

Nacos的Java SDK

配置管理 在界面上添加配置 我们在界面上新建了一个json类型的配置 使用SDK来获取配置 public String getConfig(String dataId, String group, long timeoutMs) throws NacosException名称类型描述dataIdstring配置 ID&#xff0c;采用类似 package.class&#xff08;如com…

10分钟vue初步入门

基础原理 使用vue开发&#xff0c;对于新手需要了解的两个关键点是 MVVM MVC模式变化而来&#xff0c;相对于MVC强调控制-模型-视图的责任分离之外&#xff0c;最大的特点就是引入ViewModel&#xff0c;支持双向绑定 比如你改变一个输入框 Input 标签的值&#xff0c;会自动…

仓库管理系统GreaterWMS的安装

本文是应网友 ubuntu 和 Nathan 要求写的&#xff1b;因为看起来 Nathan 比较着急&#xff0c;就突击了一下&#xff0c;因为时间仓促&#xff0c;错误在所难免&#xff0c;敬请谅解~ 什么是 GreaterWMS &#xff1f; GreaterWMS是完全开源的仓库管理系统。该库存管理系统是目前…

心脏病_冠心病智能预测模型(人工智能,机器学习,用于论文作业_专利_企业建模__项目申报_科研报告,收藏)

作者Toby&#xff0c;来自心脏病_冠心病智能预测模型 ​ 心脏病&#xff08;heart disease&#xff09;是心脏疾病的总称&#xff0c;包括风湿性心脏病、先天性心脏病、高血压性心脏病、冠心病、心肌炎等各种心脏病。 人体“发动机” 心脏是一个强壮的、不知疲倦、努力工作的…

更适合运动的耳机,设计时尚轻巧好用,南卡Runner CC3上手

很多喜欢健身的朋友&#xff0c;在锻炼的时候都会戴上一副耳机&#xff0c;这样可以在音乐的节奏中享受运动的乐趣。在运动耳机当中&#xff0c;骨传导耳机是这两年很受欢迎的一种类型&#xff0c;相比于更常见的真无线耳机&#xff0c;骨传导耳机因为特殊的发声方式&#xff0…

品优购项目-头部底端和整个页面底端制作

品优购项目(二) 3). nav 制作 nav 盒子通栏有高度 而且有个下边框1号盒子 左侧浮动 dorpdown 下拉导航 里面包含 dt dd2号盒子右侧浮动 navitems 导航栏组 11. logo 优化 logo 里面 首先放一个 h1 标签 &#xff0c;目的是为了提权&#xff0c;告诉搜索引擎&#xff0c;这个地方…

微信小程序开发—入门到跑路(四)

1、学习目标 今天所学习的所有知识点都是围绕自定义组件 &#xff0c; 具体参见&#xff1a;【指南>自定义组件】 知识点名称知识点内容难度系数要求程度组件创建和引用创建自定义组件、局部引用、全局引用、全局和局部比较、组件和页面的区别3星掌握组件样式样式的隔离特…

如何使用Moonbeam Safe质押GLMR/MOVR

通过Moonbeam Safe能够轻松实现与已验证的合约进行合约交互。Moonbeam的StakingInterface.sol&#xff08;虽然准确来说被描述为预编译而非合约&#xff09;已经在Moonscan上通过验证&#xff0c;能够使用Moonbeam Safe&#xff08;Gnosis的一个用户友好型分叉&#xff09;实现…

使用 vcpkg 安装 mathgl,但使用 find_package 命令却找不到的问题

问题描述 使用 vscode cmake vcpkg 进行c开发, 很 Nice. 但是在使用MathGL库的时候却出现了问题, 如果你的CMakeLists.txt 是这样写的: cmake_minimum_required(VERSION 3.0.0) project(mgl_demo VERSION 0.1.0)find_package(MathGL CONFIG REQUIRED)add_executable(mgl_de…

贝叶斯基础

概要 贝叶斯定理描述的是条件概率&#xff0c;不同于全局概率&#xff0c;它表示当某一个事件&#xff08;B&#xff09;发生时&#xff0c;另一个事件&#xff08;A&#xff09;发生的概率。从机器学习的角度&#xff0c;从全局无法知道事件&#xff08;A&#xff09;发生的概…

IT行业岗位分析系统设计与实现(Spark+Hadoop)

目 录 摘要 I ABSTRACT II 1 引言 1 1.1 研究背景 1 1.2 研究意义 1 1.3 研究内容与组织结构 1 2 相关理论与技术介绍 3 2.1 HDFS简介 3 2.2 Spark简介 4 2.3 MongoDB数据库简介 6 2.4 爬虫技术简介 7 2.5 Echarts简介 8 2.6 Pyqt5简介 8 2.7 本章小结 8 3 系统需求分析 9 3.1…

BertNet、RoBertaNe

又带来了可扩展、可解释&#xff0c;从预训练语言模型中高效提取知识图谱的新框架 来自加州大学圣迭戈分校&#xff08;UCSD&#xff09;、卡内基梅隆大学&#xff08;CMU&#xff09;等机构的研究者提出了一种自动知识抽取框架&#xff0c;可以从 BERT 或 RoBerta 等预训练语…