当前位置: 首页 > news >正文

Linux文本编辑器vim使用和配置详解

vim介绍

​ vim是Linux的一款文本编辑器,可以用来编辑代码,而且支持语法高亮,还可以进行一系列配置使vim更多样化。也可以运行于windows,mac os上。

​ vim有多种模式,但目前我们只介绍绝大多数场景用的到的模式,也就是命令模式,插入模式和底行模式,其他模式以后用到了会介绍。

  • 正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

  • 插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

  • 末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模
式。

要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

vim的基本操作

  • 在命令行输入vim 文件名后就会进入vim全屏幕编辑画面,进入vim后处于正常模式,想要编辑文本需要切换到插入模式

vim 文件名 n:打开文件并且让光标直接跳转到第n行

  • 正常模式切换到插入模式
  • 输入a(光标会跳转到下一个位置)
  • 输入i (光标会在当前位置)
  • 输入o(光标会跳转到下一行)
  • 插入模式末行模式切换到正常模式需要按esc
  • 正常模式切换到末行模式需要按shift + ;,也就是:
  • 退出vim需要进入末行模式
  • 输入w (保存当前文件)
  • 输入wq (保存当前文件并且退出)
  • 输入q! (不保存当前文件并且强制退出)
  • 插入模式末行模式不能互相切换
  • 末行模式下的一些指令
  • set nu/nonu:显示行号
  • !cmd:在不退出vim的情况下进行查看,编译,运行等动作
  • /关键字:搜索关键字,n表示下一个

​ 一下是一图流:

image-20231104115943892

注意,如果在vim界面时直接关闭XShell会生成一个隐藏的临时文件文件名.swp,以后再vim这个文件时会提示你,不想提示删除这个隐藏文件即可

vim命令模式指令集

记住以下操作都是在vim的命令模式下才能有效!

  • 光标的操作
  • hjkl:分别是让光标往 左/下/上/右 移动
  • gg:定位代码第一行
  • n+shift+g:定位代码第n行,没有n就是最后一行
  • shift+6(^):移动到当前行的开始
  • shift+4($):移动到当前行的结尾
  • w:以单词为单位,向后移动,支持跨行
  • b:以单词为单位,向前移动,支持跨行
  • e:光标跳到下个单词的词尾
  • 复制
  • n+yy:复制包含当前行的n行到缓冲区,没有n就是1行
  • n+p:粘贴n次缓冲区的内容到当前行之后,没有n就是粘贴1次
  • n+yw:复制光标开始n个单词到缓冲区,没有n就是1个
  • 删除
  • n+dd:从当前行开始剪切n行,没有n就是1行,剪切也相当于删除
  • n+x:向后删除n个字符,如果没有n就是1个
  • n+shift+x:向前删除n个字符,如果没有n就是1个
  • 替换
  • n+r:替换光标所在处的字符,或者n个字符
  • shift+'`':可以让字母在大小写之间转换
  • shift+r:进入替换模式(esc退回命令模式),替换光标所到之处的字符,直到按下esc为止
  • 撤销上一次操作
  • u:和windows的ctrl+z功能一样,撤销上一次操作
  • ctrl+r:撤销的恢复

不小心删除了一段代码用u撤回,代码就回来了,然后用ctrl+r撤回了我刚才的撤回,所以代码又回到了删除的时候,左右横跳😄

  • 查找
  • shift+3(#):查找同名单词,n单次跳转

视图模式

命令模式下输入ctrl+v进入视图模式进行批量化注释:

  1. 通过jk进行光标上下移动选中区域
  2. 输入shift+i进入插入模式
  3. 输入//
  4. esc即可完成注释

​ 批量化删除注释:

  1. ctrl+v进入视图模式
  2. hjkl进行光标上下移动选中区域
  3. 输入d完成删除

vim的其他应用

  • vim打开一个不存在的文件并且保存退出就会创建这个文件
  • vim多文件编辑
  • 底行模式vs+文件名:就可以多开文件

image-20231104141813152

  • 无论打开多少文件,光标只有一个,光标在一个区域就表示当前正在编辑哪一个文件。在文件之间切换光标是ctrl+ww

vim简单配置

​ 首先vim在启动的时候会自动扫描当前用户家目录下的vimrc文件,让.vimrc文件里的选项生效。vim配置实际上就是向.vimrc文件里添加更多的配置选项。

​ 配置vim:

  1. 首先输入cd ~进入当前用户家目录
  2. 输入ls -al看看有没有.vimrc文件,如果没有就创建一个
  3. 百度搜索vim配置,就可以把别人的配置复制添加到.vimrc文件里,就完成配置啦

​ 或者直接下载别人已经配置好的.vimrc然后拷贝到我们的家目录即可。

这里我推荐点我这个网址的vim配置,用普通账户在前面加上sudo运行一下代码即可配置完成,放心没有安全问题!(下面是成果预览)

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

概览

sudo添加用户信任列表

​ 如果用户没有被加入到sudo用户白名单是用不了sudo指令的,所以这里我们来演示如何添加用户到信任列表里。首先需要登录root账号

  1. vim /etc/sudoers进入sudoers文件

往下翻直到看见root ALL=(ALL) ALL为止

image-20231104145651489

然后在复制root ALL=(ALL) ALL,在下面粘贴,把root改为自己用户的名字即可,记得底行模式输入wq!退出(我的用户名字是normal)

然后你就可以使用sudo了,试试去运行我上面写的代码自动化配置vim吧😊

相关文章:

Linux文本编辑器vim使用和配置详解

vim介绍 ​ vim是Linux的一款文本编辑器,可以用来编辑代码,而且支持语法高亮,还可以进行一系列配置使vim更多样化。也可以运行于windows,mac os上。 ​ vim有多种模式,但目前我们只介绍绝大多数场景用的到的模式&…...

港科夜闻|香港科大戴希教授被选为腾讯公司新基石研究员

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大戴希教授被选为腾讯公司“新基石研究员”。10月30日,作为目前国内社会力量资助基础研究力度最大的公益项目之一,“新基石研究员项目”揭晓了第二期获资助名单,来自13个城市28家…...

如何读懂深度学习python项目,以`Multi-label learning from single positive label`为例

Paper : Multi-label learning from single positive label Code 先读一读README.md 可能有意想不到的收获; 实验环境设置要仔细看哦! 读论文 如何读论文,Readpaper经典十问 (可能在我博客里有写) How to read a …...

【面试】Kafka基础知识

定义 Kafka是一个分布式基于发布/订阅模式的消息队列 优点 解耦:上下游之间依赖解耦。缓冲/削峰:生产消息的速度和消费消息的速度不一致时,可以起到缓冲作用。异步:天然的异步处理机制,生产者把消息(任务)放进队列&…...

【入门Flink】- 06Flink作业提交流程【待完善】

Standalone 会话模式作业提交流程 代码生成任务的过程: 逻辑流图(StreamGraph)→ 作业图(JobGraph)→ 执行图(ExecutionGraph)→物理图(Physical Graph)。 作业图算子链…...

Linux 上的轻量级浏览器

导读大多数 Linux 桌面环境中包含的基本图像查看器可能不足以满足你的需要。如果你想要一些更多的功能,但仍然希望它是轻量级的,那么看看这四个 Linux 桌面中的图像查看器,如果还不能满足你的需要,还有额外的选择。 当你需要的不…...

肆[4],滤波

1,简介 1.1,Opencv提供滤波处理函数 方框滤波,BoxBlur函数 均值滤波(领域平均滤波),Blur函数 高斯滤波,GaussianBlur函数 中值滤波,medianBlur函数 双边滤波,bilateralFilter函数 1.2&…...

Python 包管理器入门指南

什么是 PIP? PIP 是 Python 包管理器,用于管理 Python 包或模块。注意:如果您的 Python 版本是 3.4 或更高,PIP 已经默认安装了。 什么是包? 一个包包含了一个模块所需的所有文件。模块是您可以包含在项目中的 Pyth…...

2022年06月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 如下所示的2行代码,最后print()函数打印出来的结果是?( ) c [[赵大,…...

配置Raspberry自动连接WIFI,在无法查看路由器的校园网情况下使用自己电脑热点

1、开启电脑热点,并共享电脑WLAN2 打开控制面板->网络和Internet->网络连接 选择自己的校园网,我这里是WLAN2,右键属性,如下操作: 如果没有看到 本地连接*10类似的图标 则按如下操作:winx键&#x…...

#stm32整理(一)flash读写

以这篇未开始我将进行stm32学习整理为期一个月左右完成stm32知识学习整理内容顺序没有一定之规写到哪想到哪想到哪写到哪,主要是扫除自己知识上的盲区完成一些基本外设操作。 以stm32f07为例子进行flash读写操作 stm32flash简介 参考资料正点原子和野火开发手册 …...

windows10编译高版本openssl

参考文章 参考文章中的windows编译为低版本,在高版本的openssl编译中已经没有:“ms\do_ms.bat”这个脚本了,现记录下编译过程 1、准备工作 安装ActivePerl,安装后会自动写入环境变量,参照参考文章测试安装成功与否&a…...

Mac之NVM|通过brew安装、更新、卸载、重新安装nvm

文章目录 导文通过brew安装NVM通过brew更新NVM通过brew卸载NVM通过brew重新安装NVM 导文 Mac之NVM 通过brew安装、更新、卸载、重新安装 通过brew安装NVM brew install nvm通过brew更新NVM brew upgrade nvm通过brew卸载NVM brew uninstall nvm通过brew重新安装NVM brew re…...

react的状态管理有哪些方法?

在React中,有多种方法可以进行状态管理,以下是其中一些常见的方法: 1:使用React的内置状态(State): React组件可以通过使用 useState 钩子来管理内部的状态。它允许你在函数组件中定义和更新状态。例如: import React, { useState } from react;function MyComponent…...

AST注入-从原型链污染到RCE

文章目录 概念漏洞Handlebarspug 例题 [湖湘杯 2021 final]vote 概念 什么是AST注入 在NodeJS中,AST经常被在JS中使用,作为template engines(引擎模版)和typescript等。对于引擎模版,结构如下图所示。 如果在JS应用中存在原型污染漏洞&…...

【开题报告】基于uniapp的在线考试小程序的设计与实现

1.研究背景 随着社会的发展和科技的进步,网络技术被广泛应用于教育领域。在线教育已成为当今发展趋势之一,其中在线考试更是具有重要的意义。传统的考试方式不仅耗费大量人力物力,而且存在考试成果的保密问题。而在线考试可以使考试过程更加…...

使用pdf2image pdf转图片

安装poppler https://wenku.csdn.net/answer/1zxh8ckp6i from pdf2image import convert_from_path, convert_from_bytes import os# https://github.com/Belval/pdf2imageoutput_folder ./ dpi_value 600 pdf_start_page 1 # pdf显示的第一页 start_page 237 # 真实页码 p…...

非关系型数据库Redis的安装【Linux】及常用命令

前言 Redis(Remote Dictionary Server)是一种开源的内存数据库管理系统,它以键值存储方式来存储数据,并且支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis最初由Salvatore Sanfilippo开发&#xff0c…...

【React】02.create-react-app基础操作

文章目录 当前以及未来的开发,一定是:组件化开发如何划分组件React的工程化/组件化开发create-react-app基础运用运用react常用版本一个React项目中,默认会安装 2023年最新珠峰React全家桶【react基础-进阶-项目-源码-淘系-面试题】 当前以及…...

gcc -static 在centos stream8 和centos stream9中运行报错的解决办法

gcc -static 在centos stream8 和centos stream9中运行报错的解决办法: 报/usr/bin/ld: cannot find -lc 我们下载glibc-static: 选择x86_64的。 还有一个是libxcrypt-static,依旧在这个网站里搜。 rpm -ivh glibc-static-2.28-239.el8.x…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

Vue ③-生命周期 || 脚手架

生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

DBLP数据库是什么?

DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...