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吧😊

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

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

相关文章

树结构及其算法-二叉树节点的插入

目录 树结构及其算法-二叉树节点的插入 C代码 树结构及其算法-二叉树节点的插入 二叉树节点插入的情况和查找相似,重点是插入后仍要保持二叉查找树的特性。如果插入的节点已经在二叉树中,就没有插入的必要了,如果插入的值不在二叉树中&…

集线器、交换机、网桥、路由器、网关

目录 集线器(HUB)交换机(SWITCH)网桥(BRIDGE)路由器(ROUTER)网关(GATEWAY)交换机和路由器的区别参考 集线器(HUB) 功能 集线器对数据的传输起到同步、放大和整形的作用 属于物理层设备 工作机制 使用集线器互连而成的以太网被称为共享式以太网。当某个主机要给另一个主机发送单…

轻量封装WebGPU渲染系统示例<13>- 屏幕空间后处理效果(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/ScreenPostEffect.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 细节请见:引擎系统设计思路 - 用户态与系统态隔离-CSDN博客 2. 高频调用与低频调用隔离。…

【Unity实战】最全面的库存系统(五)

文章目录 先来看看最终效果前言配置商店系统数据创建另一个NPC绘制商店UI控制商店开关列出商品添加和删除物品功能添加商品到购物车购买商品购物车删除物品商店预览效果购买和出售切换出售功能保存商店数据快捷栏物品切换和使用完结 先来看看最终效果 前言 本期也是最好一期&a…

数字孪生技术与VR:创造数字未来

在当今数字化浪潮中,数字孪生和虚拟现实(VR)技术是两大亮点,它们以独特的方式相互结合,为各个领域带来了创新和无限可能。本篇文章将探讨数字孪生与VR之间的关系,以及它们如何共同开辟未来的新前景。 数字…

FreeRTOS_事件标志组

目录 1. 事件标志组简介 2. 创建事件标志组 2.1 函数 xEventGroupCreate() 2.2 函数 xEventGroupCreateStatic() 3. 设置事件位 3.1 函数 xEventGroupClearBits() 3.2 函数 xEventGroupClearBitsFromISR() 3.3 函数 xEventGroupSetBits() 3.4 函数 xEventGroupSetB…

项目实战:分页功能实战

1、在index.html添加点击事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"style/index.css"><script src"scr…

点大商城V2版 2.5.2.1 全开源独立版 多小程序端+unipp安装教程

点大商城V2是一款采用全新界面设计支持多端覆盖的小程序应用&#xff0c;支持H5、微信公众号、微信小程序、头条小程序、支付宝小程序、百度小程序&#xff0c;本程序是点大商城V2独立版&#xff0c;包含全部插件&#xff0c;代码全开源&#xff0c;并且有VUE全端代码。分销&am…

万岳讲堂:抖音小程序开发入门指南

抖音小程序可以将开发者的创意带入这个热门的应用中。本文将带您深入了解抖音小程序的开发入门指南&#xff0c;帮助您开始在这一平台上构建自己的应用。 一、什么是抖音小程序&#xff1f; 抖音小程序是一种轻量级的应用程序&#xff0c;它可以在抖音中直接运行&#xff0c;无…

Java8 Stream API全面解析——高效流式编程的秘诀

文章目录 什么是 Stream Api?快速入门流的操作创建流中间操作filter 过滤map 数据转换flatMap 合并流distinct 去重sorted 排序limit 限流skip 跳过peek 操作 终结操作forEach 遍历forEachOrdered 有序遍历count 统计数量min 最小值max 最大值reduce 聚合collect 收集anyMatch…

python 成绩统计,输出及格率和优

题目描述&#xff1a; 小蓝给学生们组织了一场考试&#xff0c;卷面总分为100分&#xff0c;每个学生的得分都是一个0到100的整数。 如果得分至少是60分&#xff0c;则称为及格。如果得分至少为85分&#xff0c;则称为优秀。 请计算及格率和优秀率&#xff0c;用百分数表示&am…

虚拟机保护工具:Zerto Virtual Replication 10.0 U1 Crack

Zerto虚拟复制是为需要保护虚拟机和应用程序的企业设计的产品。通过通过连接到广域网或云到远程站点的复制来保护虚拟机。Zerto VR 2.0还可以与vCloud Director一起将虚拟机或虚拟机组复制到云端&#xff08;或从云端&#xff09;。 事实上&#xff0c;Zerto与33家云提供商合作…

Unity在Project右键点击物体之后获取到点击物体的名称

Unity在Project右键点击物体之后获取到点击物体的名称 描述&#xff1a; 在Unity的Project右键点击物体之后选择对应的菜单选项点击之后打印出物体的名称 注意事项 如果获取到文件或者预制体需要传递objcet类型&#xff0c;然后使用 GameObject.Instantiate((GameObject)se…

WiFi模块在智能家居中的应用与优化

智能家居技术的迅速发展已经改变了我们对家庭的定义。WiFi模块作为智能设备连接的核心&#xff0c;扮演着连接和控制智能家居生态系统的关键角色。本文将深入研究WiFi模块在智能家居中的应用&#xff0c;同时探讨如何通过优化来提升其性能和用户体验。 1. 智能家居中WiFi模块的…

第二十六章 BEV感知系列三(车道线感知)

前言 近期参与到了手写AI的车道线检测的学习中去&#xff0c;以此系列笔记记录学习与思考的全过程。车道线检测系列会持续更新&#xff0c;力求完整精炼&#xff0c;引人启示。所需前期知识&#xff0c;可以结合手写AI进行系统的学习。 BEV感知系列是对论文Delving into the De…

Jenkins项目部署

使用jenkins部署项目 简易版使用jenkins部署项目 将war包部署到tomcat中 将已有的war包部署到tomcat中(jenkins与tomcat在同一台主机) 点击Jenkins主页的新建任务 输入任务名称 选择构建一个自由风格的软件项目后点击确定 在构建内添加构建步骤&#xff0c;选择执行shell 输入…

回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测(多指标、多图)

回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测&#xff08;多指标、多图&#xff09; 目录 回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测&#xff08;多指标、多图&#xff09;效果一览基本介绍程序设计参考资料 效果一览…

数字IC后端实现 |TSMC 12nm 与TSMC 28nm Metal Stack的区别

下图为咱们社区IC后端训练营项目用到的Metal Stack。 芯片Tapeout Review CheckList 数字IC后端零基础入门Innovus学习教程 1P代表一层poly&#xff0c;10M代表有10层metal&#xff0c;M5x表示M2-M6为一倍最小线宽宽度的金属层&#xff0c;2y表示M7-M8为二倍最小线宽宽度的金…

npm的使用

package.json 快速生成package.json npm init -y “version”: “~1.1.0” 格式为&#xff1a;「主版本号. 次版本号. 修订号」。 修改主版本号是做了大的功能性的改动 修改次版本号是新增了新功能 修改修订号就是修复了一些bug dependencies "dependencies": {&…

redis rdb aof

appendonly yes # appendfsync always appendfsync everysec # appendfsync no E:\Document_Redis_Windows\redis-2.4.5-win32-win64\64bit appendonly.aof