Linux工具 - 强大的vim编辑器

news2025/5/22 22:42:12

在这里插入图片描述

~~~~

  • 前言
  • vim是什么
  • 为什么有vim
  • vim怎么用
    • vim模式介绍
    • 模式切换
    • 命令模式(Normal mode)
      • i/a/o 切换到插入模式
      • : 切换到底行模式
      • R 切换到替换模式
      • 光标移动
      • 删除文字
      • 复制
      • 撤销
      • 更改
    • 插入模式(Insert mode)
    • 底行模式(last line mode)(需整理20240311)
    • 替换模式
    • vim简单配置
      • vim配置文件 .vimrc
      • vim常用配置举例:(可自行搜索更多)
      • 成熟的vim配置方案
    • vim学习资料
  • 结语

前言

本文介绍Linux下著名且强大的vim编辑器。让我们开启命令行下的代码编写,就像在windows下一样。


vim是什么

vim是一款多模式编辑器,支持多种插件配置。vim编辑器存在着多种模式供用户使用,在Linux下写代码,掌握vim编辑器的使用是很有必要的。

为什么有vim

vim出现于早期没有图形化界面、没有鼠标的时候,当时的电脑只有黑窗口和键盘。程序员使用vim在黑窗口中进行编辑,对vim的操作都只通过键盘来控制。当时键盘上也没有上下左右方向键,而是通过hjkl控制光标的左下上右的移动的。
image.png

vim怎么用

vim模式介绍

vim是一款多模式编辑器,众多模式中,我们本文主要学习的命令模式、底行模式、插入模式这三个模式。

模式切换

image.png

命令模式(Normal mode)

是用户打开vim的默认模式,用户可以执行vim提供的各种命令。
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式或底行模式。

i/a/o 切换到插入模式

i:从光标当前位置开始进行输入,光标不变。
a:从光标的下一个位置开始进行输入,光标后移1个位置。
o:从光标的下一行的行首开始进行输入,光标移到下一行起始位置,会新开一行。

: 切换到底行模式

R 切换到替换模式

R或ctrl+r:

光标移动

命令功能栗子
gg移动到文本开始
G移动到文本结束
#G移动到指定的#行处未输入#,默认移动到文本结束位置
^移动到本行的行首
$移动到本行的行尾
#l移动到光标后的第#个位置,已在行尾则不再移动5l,即移动到光标后的第5个位置
#w移动到下#个字的开头不输入#,默认是移动1个字
#e移动到下#个字的开头不输入#,默认是移动1个字
#b移动到上#个字的开头不输入#,默认是移动1个字
ctrl + b向上移动一个屏幕
ctrl + f向下移动一个屏幕
ctrl + u向上移动半个屏幕
ctrl + d向下移动半个屏幕
ctrl + w光标切换到下一个打开的文件内用于vim使用vs分屏打开多个文件时,对光标的切换,光标在哪个文件,就是正在对那个文件进行编辑

删除文字

命令功能栗子
#x删除光标所在位置及其之后的#个字符不输入#默认删除1个字符
#X删除光标所在位置之前的#个字符不输入#默认删除1个字符
#dd删除光标所在行及其之后的#行不输入#默认删除1个字符

复制

命令功能栗子
#yy复制光标所在行及其之后的共#行不输入#默认删除1个字符
#yw复制光标位置到当前字字尾的字符不输入#默认删除1个字符
p粘贴缓冲区的内容到光标所在位置
复制操作yy/yw都会把复制的内容放入缓冲区

撤销

命令功能栗子
u撤销上一步的操作类似win的ctrl+z
ctrl + r恢复你的撤销(对撤销的撤销)

更改

命令功能栗子
c#w更改光标所在字及其之后的共#个不输入#默认更改1个字符。更改的意思是,删除字符再进入插入模式等待用户输入

插入模式(Insert mode)

主要进行文字输入。

底行模式(last line mode)(需整理20240311)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,_shift+: _即可进入该模
式。要查看你的所有模式:打开vim,底行模式直接输入

命令功能栗子
:set nu显示行号
:#光标跳到#行行首#是需要输入的数字
:w保存并退出编辑,就算没有修改也会写入,并修改文件时间属性
:w!强制保存文件内容
:q关闭文件一般wq搭配使用,完成保存退出的功能
:q!强制关闭文件,但并不保存当前修改
:x!保存并退出编辑,仅当文件有修改时会保存,并修改文件时间属性
😕#查询搜索文件中出现#内容的所有位置,并高亮。使用n跳到下一个#内容;使用N跳到上一个#内容。#是用户输入的内容,可以是数字,字符,汉字等
:?#查询搜索文件中出现#内容的所有位置,并高亮。使用n跳到上一个#内容;使用N跳到下一个#内容。#是用户输入的内容,可以是数字,字符,汉字等。
/和?搜索的结果相同,但使用n/N查询结果时移动方向是相反的。
😒批量替换指定字符序列为新的字符序列:%s/string1/string2/g
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
:p打印指定区间的行

:[range]p[rint] [flags] |
| :i | 在指定行上方添加文本 | :{range}i[nsert][!] |
| :vs filename | 分屏打开文件 | |

在vim的底行模式中,
😒 表示substitute,也就是替换, 格式为以下
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
range 表示区间 % 用于表示全文, 2,3 表示从第2行开始到第3行
{pattern} 表示字符串匹配规则,要匹配什么样的字符串 , 比如^a 表示以a字符起始的字符串
{string} 表示要将匹配到的字符串替换为的新的string字符串
[flags] s_flags中,g比较常用,通常使用g表示全部替换,默认如果不给的话,表示只替换一次
[count] 表示在一行中匹配多少次,很少会用到…
如果想要将文件中所有 nihao 替换为 hello 则命令为: _%s/nihao/hello/g _
:p 用于打印指定区间的行
:[range]p[rint] [flags]
:i 在指定行上方添加文本
:{range}i[nsert][!]

替换模式

命令功能栗子
#r命令模式下使用:替换光标所在位置及其之后的共#个字符不输入#默认替换1个字符
R进入替换模式,一直替换光标所在位置的字符,直到按ESC退出替换模式

vim简单配置

vim初始时只是一个啥也没有的编辑器,界面很简陋,没有语法高亮,没有提示,没有换行控制、没有行号显示…等等。我们需要方便实用vim,需要对vim进行一些简单配置(插件安装)或者直接使用网上他人已经配置好的方案。

vim配置文件 .vimrc

在系统路径/etc下有一个名为vimrc的文件:
这个文件是所有用户公共配置文件,对所有用户都有效,一般我们不会直接对其进行配置,否则会影响所有用户。
image.png
每个用户的家目录/home/usr下有一个隐藏的.vimrc文件,这就是当前用户本地(私有)的vim配置文件,只对当前用户有效。
通常用户家目录下都会存在一个.vimrc文件,如果不存在,用户需要自己创建。

vim常用配置举例:(可自行搜索更多)

set ai                    自动缩进,与上一行保持一致的自动空格
set ic                    在查询模型与匹配模式下忽略大小写
set number                左侧显示行号
set showmatch             显示括号配对,并高亮显示相匹配的括号
set showmode              文本输入模型下,加亮显示模式指示器
set showcmd               在状态栏显示所执行的指令,未完成的指令片段
set warn                  长行显示自动折行
set cindent               以C/C++模式缩进
set ruler                 打开状态栏标尺
set scrolloff=6           设置光标离窗口上下6行时窗口自动滚动
set tabstop=4             设置Tab长度为4
set wrap                  自动换行显示
syntax enable
syntax on                 自动语法高亮

成熟的vim配置方案

SpaceVim

vim学习资料

vim入门


结语

本文主要介绍了编辑器vim的四个模式:命令模式、插入模式、底行模式和替换模式,以及它们模式切换。还介绍了vim不同模式下的基本操作,vim想要熟练使用,只记忆是不行的,需要持续练习vim,向着精通vim的方向前进!
最后介绍了vim如何进行配置,毕竟没有配置过的vim是很难有使用欲望的。


T h e E n d TheEnd TheEnd

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

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

相关文章

STP环路避免实验(思科)

华为设备参考:STP环路避免实验(华为) 一,技术简介 Spanning Tree Protocol(STP),即生成树协议,是一种数据链路层协议。主要作用是防止二层环路,并自适应网络变化和故障…

大势智慧与云世纪签署战略合作,实景三维赋能低空经济,泛测绘助力城市数据更新更高效

2024年《政府工作报告》提出“要大力推进现代化产业体系建设,加快发展新质生产力”、“积极打造商业航天、低空经济等新增长引擎”。 近日,武汉大势智慧科技有限公司(以下简称“大势智慧”)和青岛云世纪信息科技有限公司&#xf…

Portraiture2024中文版PS/LR专用智能磨皮插件

打造完美肤质,Portraiture PS/LR专用智能磨皮插件让你的照片焕发魅力 副标题:让你的照片告别粗糙皮肤和毛孔,展现自然细腻的肤质 在摄影后期处理中,给照片进行磨皮和肤质优化是一项必不可少的步骤。 而今天,我们为你带…

不偷看密码的超萌猫头鹰

页面结构 不偷看密码的超萌猫头鹰.css * {/* 初始化 */margin: 0;padding: 0; }body {/* 100%窗口高度 */height: 100vh;/* 弹性布局 居中 */display: flex;justify-content: center;align-items: center;/* 渐变背景 */background: linear-gradient(200deg, #72afd3, #96fbc4)…

分布式接口幂等性解析

一、概述 幂等性定义:用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。【同一操作指的是同一个浏览器,发送相同的请求】。 常见场景: 提交订单接口。返回提交结果时网络出现故障&am…

如何在小程序上搭建积分商城呢_小程序搭建积分商城的优势

小程序积分商城:打造你的数字营销新引擎 在数字化营销的时代,如何有效吸引并留住用户,成为了每个企业都面临的重大课题。小程序积分商城,作为一种新兴的营销方式,正在以其独特的魅力,帮助企业实现用户增长…

Python进程与线程开发

目录 multiprocessing模块 线程的开发 threading模块 setDaemon 死锁 线程间的通信 multiprocessing模块 运行python的时候,我们都是在创建并运行一个进程,(linux中一个进程可以fork一个子进程,并让这个子进程exec另外一个程序)。在pyt…

MySQL如何用phpMyAdmin创建定时任务事件来执行SQL语句删除_edit_lock和_edit_last?

前面跟大家分享了『WordPress如何批量删除wp_postmeta数据表无用的_edit_lock和_edit_last数据?』和『宝塔面板在计划任务中怎么执行SQL语句删除_edit_lock和_edit_last?』,但是有些站长并不是使用宝塔面板,那么我们如何时间定时删…

阅读基础知识1

一 网络 1. 三次握手四次挥手 三次握手:为了建立长链接进行交互即建立一个会话,使用 http/https 协议 ① 客户端产生初始化序列号 Seqx ,向服务端发送建立连接的请求报文,将 SYN1 同步序列号; ② 服务端接收建立连接…

走近 AI Infra 架构师:在高速飞驰的大模型“赛车”上“换轮子”的人

如果把大模型训练比作 F1 比赛,长凡所在的团队就是造车的人,也是在比赛现场给赛车换轮子的人。1% 的训练提速,或者几秒之差的故障恢复时间,累积起来,都能影响到几百万的成本。长凡说:“大模型起来的时候&am…

日本科技巨头富士通遭遇网络攻击,客户数据被窃

日本科技巨头富士通3月15日发布通告,宣称公司经历了一起网络攻击事件,客户个人数据已被黑客窃取。 富士通在一份通知中写道:“我们已经确认有几台商用计算机上存在恶意软件,并且经过我们的内部调查,发现包含个人信息和…

Linux权限维持后门及应急响应

本次应急响应实验用kali和centos7来充当攻击机和靶机 kali:192.168.10.130 centos7:192.168.10.155 前提: 用kali连接到centos7上面ssh root192.168.10.155 一、SSH软链接 任意密码登录即可发现程度:|||||| ln -sf /usr/sbi…

卓越巨人wzy

解法&#xff1a; 向下取整同理&#xff0c;f(n)20230416-n 当n20230416时&#xff0c;f&#xff08;n&#xff09;0&#xff0c;之后由于向上取整&#xff0c;结果恒为0. #include<iostream> #include<algorithm> #include<vector> using namespace std; …

网站如何搭建 网站搭建的详细步骤

网站如何搭建 网站搭建的详细步骤 一.领取一个免费域名和SSL证书&#xff0c;和CDN 1.打开网站链接&#xff1a;https://www.rainyun.com/z22_ 2.在网站主页上&#xff0c;您会看到一个"登陆/注册"的选项。 3.点击"登陆/注册"&#xff0c;然后选择"…

下拉树级带搜索功能

可以直接复制粘贴到自己的项目里,方法处把接口替换一下 <template><div><el-popoverplacement"bottom"width"200"trigger"click"><el-inputslot"reference"class"mrInput":placeholder"placehol…

巨细!Python爬虫详解

爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在 FOAF 社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff1b;它是一种按照一定的规则&#xff0c;自动地抓取网络信息的程序或者脚本。 如果我们把互联网比作一张大的蜘蛛网&#xff0c;那…

二、yocto 集成ros2(基于raspberrypi 4B)

yocto 集成ros2 yocto 集成ros21. 下载ros layer2. 编译集成ros3. 功能验证 yocto 集成ros2 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第二篇文章。 一、yocto 编译raspberrypi 4B并启动 本节我们将ros2机器人操作系统移植到我们的yocto系统里面。 1. 下载ros laye…

Ansible基本介绍与模块使用

目录 引言 一、Ansible简介 &#xff08;一&#xff09;基本概述 &#xff08;二&#xff09;主要特点 二、Ansible安装及基本组件 &#xff08;一&#xff09;yum安装 &#xff08;二&#xff09;编译安装 &#xff08;三&#xff09;基本配置信息 1.主配置文件 2.主…

v-bind 绑定 class 与 style 基础用法

使用 v-bind 指令绑定 class 和 style 时语法相对复杂一些&#xff0c;这两者是可以互相替代的&#xff0c;均用于响应更新HTML元素的属性&#xff0c; v-bind 绑定 class 属性可以改写成绑定 style 属性&#xff0c;只是 css 属性位置变了而已。 1. 绑定 class 属性 1.1 数组…

GPT-4与Claude3、Gemini、Sora:AI领域的技术创新与突破

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…