Linux中vim的基本介绍和使用

news2024/9/20 23:26:39

善为理者,举其纲,疏其网。


vim

  • 1、vim介绍
  • 2、命令模式详情
  • 3、底行模式详情
  • 4、困难问题
  • 5、历史存疑问题
  • 6、vim配置问题
    • 6、1、配置的原理
    • 6、2、一键式配置

1、vim介绍

如果我面想要在Linux上编写代码的话,我就需要vim来帮助我们编写代码。但是vim并不像是在Windows上的vs集成软件把所有的东西都集成起来但是呢,如果不进行配置的话,vim和其他是相互独立的,vim就是写代码的编辑器,编译代码就是gcc/g++的编译器,调试代码就有gdb的调试器。自动化构建就有make和makefile构建的工具。在这里插入图片描述
vim是款编辑器,同时也是多模式的编辑器—命令模式,底行模式,插入模式。
简单编译一个hello vim程序
vim刚开始打开的时候,暂时是无法正常输入的,因为刚打开的时候是命令模式,默认打开的时候,目前所输入的都会看成是命令,当然,如果命令不对当然什么操作都没有咯。
从命令模式进入插入模式输入 i
如果编辑完了,想要退出去,该怎么办呢?首先需要从插入模式退出到命令模式,按一下Esc,现在在命令模式,此时想要退出的话,需要按:() ,从命令模式进入到底行模式之后,继续按wq就能够退出。如果是在底行模式不想退出的话,也能够通过按Esc重新命令模式。
概括介绍:
插入模式:编辑模式
命令模式:允许使用者通过命令,来进行文本的编辑控制。
底行模式:如果前两个模式是对于文本内容的控制,底行模式就是让vim进行包括但不限于和shell进行交互的。

2、命令模式详情

命令模式:没必要进入插入模式才能对文本进行操作。

yy:复制当前行
p:粘贴到当前光标的下一行
u:撤销
dd:剪切/删除
n dd:剪切/删除n行
n p:粘贴n行
n yy:复制n行
$:快速定位光标到当前行的最末尾
^:快速定位光标到当前行的最开头
gg:将光标定位到文本的最开头
G:将光标定位到文本的最末尾
n G:定位到指定的n行
h:光标向左一位
j:光标向下一位
k:光标向上一位
l:光标向右一位

n h:光标向左n位
n j:光标向下n位
n k:光标向下n位
n l:光标向右n位

快速记住hjkl方向键的意义。
h最左边,所以h表示向左。l在最右边,所以l表示向右。k(king高高在上),所以k表示向上。j(jump向下跳),所以j表示向下。

w:按照单词为单位,进行光标后移
b:按单词为单位,进行光标前移
ctrl r:撤销撤销的动作
shift~:shift按住不动,连续按~能让光标定位的字母快速进行大小写切换
x:删除光标所在位置的字符,先向后删,删完后向前删
n x:删除光标所在位置的n个
X:删除光标之前的字符
r:对光标指定的位置,进行一个字符的替换
n r:对光标指定的位置,进行n个字符的替换
R:进入replace模式,能够进行多次替换
i:直接进入插入模式
o:进入编辑模式的同时还新增一行
a:进入编辑模式,同时向后一位字符

3、底行模式详情

进入底行模式,是在命令模式情况下按:。

q!:强制退出。
q:退出,但是如果不保存的话,会警告没有保存。
wq:保存并退出
wq!:保存并强制退出
set nu:调出行号
set nonu:去掉行号

还可以进行批量化的替换

s/prinf/PRINTF/g:进行printf全部替换成PRINTF
/XXX:进行XXX的全文搜索,并且高亮
!command:不退出vim,可以进行shell命令的执行
(最常用的能够man指令,这样就不用退出后再去查看)

vim不会新建文件,只有当我们保存的时候,才会首次被创建。(vim 文件(新文件))。
在windows上的图形化界面,想要多文件同时编辑的话,只需要点击相对应的文件图形就能够切换,那么在Linux中怎么实现呢?难不成还是保存完之后再进行编辑另一个文件?

vs filename:分屏,多文件操作
ctrl ww:光标在两个编辑窗口切换

左右两个窗口可以互相拷贝粘贴。

底行模式不能直接进入插入模式,插入模式也不能直接进入底行模式。

命令模式时候怎么快速的退出?ZZ即可

4、困难问题

怎么注释?
换句话说困难的问题是,如何批量注释?

ctrl+v:先进入视图模式
//进入视图模式后选择需要批量化编辑的区域
I:大写的i进入编辑模式

编写完成之后按Esc两次,就能够进行多行的注释
怎么批量化去注释

ctrl+v:进入视图模式
//选择需要进行编辑的区域
d:删除/去注释

5、历史存疑问题

解决历史问题:普通用户无法进行sudo提权(其中Linux用户章节留下的问题)
如果没有提前解决白名单黑名单类似的问题的话,会出现这样的报错。
在这里插入图片描述
在这里插入图片描述
首先如果想要修改这个文件的话,必须要是root才能。利用root打开/etc/sudoers文件。进行修改。
在这里插入图片描述
找到这里并添加用户
在这里插入图片描述
可是此时也会出现报错,会有系统来提醒是否需要保存。这是就必须要用到**wq!**来强制保存并退出。
在这里插入图片描述
这样就成功了,能够实现sudo命令。

6、vim配置问题

6、1、配置的原理

vim不是简单的执行可执行程序,在启动执行的时候也会读取若干可执行的配置文件。通常来说没配置的话读取的都包含 .vimrc。
如果本身没有的话,可以创建一个.vimrc文件并在里面进行配置。这样的话也符合Linux多用户操作系统的作用,每一个人都可以个性化配置vim。可以但不限于set nu

6、2、一键式配置

在网上寻找例如gitte或者github上的教程。

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

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

相关文章

基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页--实现修改商品的名字与价格功能(万字爆更)增查改删,三端交互样样齐全

技术支持:JAVA、JSP 服务器:TOMCAT 7.0.86 编程软件:IntelliJ IDEA 2021.1.3 x64 前文几个功能的实现的博客 基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网(1)-项目搭建(前期准备工作&am…

Pycharm2023.1安装及其破解(含安装包)

一、下载 安装包 pycharm-professional-2023.1.exe https://www.alipan.com/s/f9WgrwLRbVn 提取码: 0yow 二、安装 三、激活 激活码:pycharm专业版激活码,2025.1月结束_pycharm序列号-CSDN博客 四、汉化

2024年8月2日(安装MySQL,以及各种操作)

一、安装并配置MySQL 1、下载mysql软件包 [rootmysql ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2、解压 [rootmysql ~]# tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3、检查是否具有mariadb/mysql&…

技术成神之路:设计模式(十一)迭代器模式

前言 迭代器这个词听到并不陌生吧,我们再开发中遍历HashMap 和 HashSet的时候 用到的迭代器和这里的迭代器是一个概念,当然,这个模式不是教你如何去实现的,而是以了解为主。 介绍 迭代器模式(Iterator Pattern&#…

携程实习生0506笔试-编程题

解题思路: 看坐标之和,奇数偶数不同字符即可。 解题思路: 题目应该是求连续的k长度最大值,遍历比较字符串,最后再取模。 import java.util.Scanner;public class Main {public static void main(String[] args) {Scann…

Keysight(原Agilent) E4980AL 精密 LCR 表特性与技术指标

Keysight(原Agilent) E4980AL 精密 LCR 表为基础 LCR 表树立了行业标准,可在多个频率范围内提供更佳的精度、速度和通用性。E4980AL 结合了种类繁多的附件,适用于一般研发和生产环境中的各种元件和材料测量。也可通过频率升级而提升投资回报率。 Keysig…

媲美Element Plus JuanTree终极实战:虚拟滚动

JuanTree组件功能迭代终于来到了终章——虚拟滚动实现。 有了前面学习的铺垫:vue大数据量列表渲染性能优化:虚拟滚动原理 把示例的实现用到JuanTree组件就变得非常的简单了。 功能视频演示: 自研Vue3 Tree组件 - 虚拟滚动功能演示 先来看效…

文档在线预览:keking/kkFileView踩坑记

文章目录 一、概述1、官方文档2、使用 二、部署服务1、传统部署方式(1)环境要求(2)生成部署包 2、docker部署方式 三、踩坑1、预览并发问题&预览首次打开慢2、字体问题乱码3、水印问题4、使用nginx代理5、docker部署指定配置 …

stm32 RAM for Algorithm问题,已解决

在此界面将 programming Algorithm内的flash remove,然后再重选就能解决

Drools

Drools基本了解 谈谈对业务规则管理系统的了解 举例说明 规则引擎系统是一个规则管理系统,接受数据输入、解释业务规则、根据业务规则做出业务决策的一个系统,其适用场景有贷款风险评估、积分优惠系统、保险理赔系统。规则是由“条件动作”组成&#x…

雅萌五代射频仪拆机图

雅萌五代射频仪拆机图,相对之前的版本,这个射频仪的头部电极部分,进行结构的优化,整个面比较平整光滑,不容易残留凝胶

allegro学习之一

1)favorite设置界面 2)双单位显示界面设置 3)高亮实心显示 4)自己设置的favorite 5)导线圆滑显示 6)plane的使用场景 7)add to visibility的方法 8)net group的使用 效果图如下&am…

实施运维方案(Word原件)

编写目的: 作为项目运维服务质量管理的总纲,规范和指导公司运维服务质量管理,加强运维服务质量管理的有效性。保证运维服务的整体质量,提升公司运维服务的整体质量水平。使公司能够为客户提供更高质量的运维服务,保障公…

【优选赛事】2024年iCAN大赛AI视觉检测设计挑战赛

iCAN大学生创新创业大赛(以下简称“iCAN大赛”")是一个无固定限制、鼓励原始创新的赛事,自2007年发起至今,得到了广大青年学生的热爱。2010年,iCAN大赛获批《教育部、财政部关于批准2010年度大学生竞赛资助项目的通知》大学生竞赛资助项…

Windows上安装EMQX作为MQTT服务器以及配置MQTTX客户端

一、安装EMQX MQTT服务器 EMQX 是一个高性能、可扩展的物联网消息中间件,EMQX 实现了 MQTT 协议的服务器端,即 MQTT Broker,它负责接收来自客户端的连接请求,处理订阅、发布消息,并将消息转发给相应的订阅者。 下载E…

大模型训练流程解析

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl训练大模型是一个复杂且资源密集的过程,它不仅仅要求大量的计算资源和时间,还涉及多个关键步骤和要素。这个过程需要从数据的收集、清洗、整理到模型的设计与选择,再到模型的训练、评估与优化,…

Netty4自学笔记 (3) - Netty NIO Server和Client 样例说明

全文详见个人独立博客:Netty4自学笔记 (3) - Netty NIO Server和Client 样例说明 Netty4自学笔记 (3) - Netty NIO Server和Client 样例说明更新节奏缓慢,因为每晚学习注意力不够集中,学习进展缓慢。本还给自己找了一大堆其他理由&#xff0…

tof系统标定流程之双频测距与代码详解

tof系统标定流程之双频测距目录 1、双频测距原理2、双频测距流程3、双频测距代码1、双频测距原理 为什么需要双频测距,只用一个频率测距不行吗?实际上一个频率的测距范围有限,以100MHZ/80MHZ/10MHZ/15MHZ的频率为例,其测距范围分别是1.5m,1.875m,15m,10m,频率越低测距范围…

TypeError: ‘dict’ object is not callable 深度解析

TypeError: ‘dict’ object is not callable 深度解析 在Python编程中,TypeError: dict object is not callable是一个常见的错误,通常发生在尝试调用一个字典对象时。这个错误表明代码中存在逻辑错误,可能是将字典误用为函数或方法。本文将…

C++第六篇 模板初阶和STL简介

目录 一,模板初阶 1.泛型编程 2.函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3.类模板(模板类,模板函数) 3.1 类模板定义格式 二,STL简介 1. 什么是STL 2. ST…