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

news2024/11/25 2:56:31

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.coloradmin.cn/o/1170819.html

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

相关文章

CCF CSP认证 历年题目自练Day43

题目一 试题编号: 201604-3 试题名称: 路径解析 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在操作系统中,数据通常以文件的形式存储在文件系统中。文件系统一般采用层次化的组织形式&…

NLP之Bert多分类实现案例(数据获取与处理)

文章目录 1. 代码解读1.1 代码展示1.2 流程介绍1.3 debug的方式逐行介绍 3. 知识点 1. 代码解读 1.1 代码展示 import json import numpy as np from tqdm import tqdmbert_model "bert-base-chinese"from transformers import AutoTokenizertokenizer AutoToken…

深入解析Spring Boot自动配置原理:让你的应用无痛集成

1.前言 1.1springboot的优势 Spring Boot是一个用于构建独立、生产级的Spring应用程序的开发框架,它在简化配置、提高开发效率、增强功能丰富性等方面具有以下优势: 简化配置:Spring Boot采用了约定优于配置的原则,通过自动配置和…

Java基于springboot开发的景点旅游项目

演示视频 https://www.bilibili.com/video/BV1cj411Y7UK/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 主要功能:用户可浏览搜索旅游景点(分为收费和免费景点),购票(支持多规格套餐购票&am…

Unity3D实现页面的滑动切换功能

效果展示 Unity3D实现页面的滑动切换 效果 文章目录 前言一、先上代码二、创建UI1.创建Scroll View如下图,并挂载该脚本:2.Content下创建几个Itme 总结 前言 好记性不如烂笔头! 一、先上代码 /*******************************************…

堆排序--C++实现

1. 简介 堆排序利用的是堆序性,最小堆进行从大到小的排序。 先建初堆,保证堆序性。将堆顶元素与最后一个元素交换, 就将当前堆中的最大(小)的元素放到了最后后。堆大小递减,再重新调整堆选出第二大,重复上述过程。 2…

python推导式特殊用法

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 字典推导式 >>> dic {x: x**2 for x in (2, 4, 6)} >>> dic {2: 4, 4: 16, 6: 36} >>> type(dic) <class dict>集合推导式 …

VSCode 的 C/C++ 开发环境的傻瓜级自动部署程序

软件介绍 VSCode 是一款优秀的编辑器&#xff0c;可以通过各种插件&#xff0c;将其配置成 C/C 开发环境。只是对于初学者而言&#xff0c;配置步骤有点繁琐。 软件 VSCode-Setup(MinGW) 提供了自动下载安装 VSCode 并配置成 C/C 开发环境的功能。无需担心该软件会对系统有额…

JavaWeb | JavaWeb开发环境相关知识点

JavaWeb开发环境相关知识点: 1.C/S结构、B/S结构2.浏览器与服务器的交互模式3.Tomcat安装目录中&#xff0c;比较重要的文件夹/文件4.怎么修改Tomcat端口&#xff1f;5.URL /url / 统一资源定位符 1.C/S结构、B/S结构 网络应用程序中&#xff0c;有 两种基本结构&#xff1a; C…

java.io.FileNotFoundException: D:\桌面\file3 (拒绝访问。)

java.io.FileNotFoundException: D:\桌面\file3 拒绝访问。 问题描述一、问题原因及其解决办法 问题描述 今天笔者使用FileInputStream输入流的时候&#xff0c;向里面添加了&#xff08;new File(“D://桌面//file3”)的File文件参数&#xff09;&#xff0c;最后不管怎样运行…

广州华锐互动:数字孪生可视化制作软件有哪些亮点?

由广州华锐互动开发的数字孪生可视化制作软件在当今的数字孪生领域中扮演着重要角色&#xff0c;它突破了许多传统数字孪生可视化制作软件的限制。以下是几个方面的突破&#xff1a; 无限自由度&#xff1a;传统的3D建模工具通常有限制编辑器的自由度&#xff0c;使用户难以进行…

KEDA:基于事件驱动扩展K8S应用的深度实践

新钛云服已累计为您分享773篇技术干货 为什么我们要自动扩展应用程序&#xff1f; 作为 SRE&#xff0c;需要保证应用弹性和高可用性。因此&#xff0c;自动缩放是我们需要的必须功能。通过自动缩放&#xff0c;我们能确保工作负载能够高效的地处理业务流量。 在本文中&#xf…

[vmware]vmware虚拟机压缩空间清理空间

vmware中的ubuntu使用如果拷贝文件进去在删除&#xff0c;vmare镜像文件并不会减少日积月累会不断是的真实物理磁盘空间大幅度减少&#xff0c;比如我以前windows操作系统本来只有30GB最后居然占道硬盘200GB&#xff0c;清理方法有2种。 第一种&#xff1a;vmware界面操作 第二…

Dubbo篇---第二篇

系列文章目录 文章目录 系列文章目录一、注册中心挂了,consumer 还能不能调用 provider?二、怎么实现动态感知服务下线的呢?三、Dubbo 负载均衡策略?一、注册中心挂了,consumer 还能不能调用 provider? 可以。因为刚开始初始化的时候,consumer 会将需要的所有提供者的地…

多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉 计算机竞赛

文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习多目标跟踪 …

解决Ts中的error.stack报错property ‘stack‘ does not exist on type ‘unknown typescript

我用的Ts版本是5.x&#xff0c;所以在使用的时候出现了这个问题 解决方式&#xff1a; 将error先转一遍就好了 参考链接&#xff1a; 你真的会处理TS中的Error么 - 掘金 (juejin.cn) Announcing TypeScript 4.4 - TypeScript (microsoft.com)

黑群晖安装及使用小计

最近发现4t的盘装满了&#xff0c;最主要的照片也来到了4万张大关。所以怎么处理&#xff0c;怎么定位&#xff0c;怎么更方便的查找图片就变得很重要。 第一步我选择了picturama这个软件&#xff0c;只要指定图片文件夹&#xff0c;能够很快速 的浏览&#xff0c;并且带时间轴…

Zabbix结合Grafana统计日志网站访问量

Zabbix除了可以通过HTTP代理及WEB场景监控网站的响应结果、响应时间和传输速度等&#xff0c;也可以通过读取网站的后台日志&#xff0c;获取有用的统计信息。 下面我以Grafana为例&#xff0c;通过日志统计网站的访问量。 操作如下&#xff1a; 1、读取grafana日志 首先要基…

基于单片机的商场防盗防火系统设计

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、系统分析二、系统总设计2.1基于单片机的商场防火防盗系统的总体功能2.2系统的组成 三 软件设计4.1软件设计思路4.2软件的实现4.2.1主控模块实物 四、 结论五、 文章目录 概要 本课题设计一种商场防火防盗报警…

Webpack的入口(entry)和出口(output)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…