【vim工具的使用】

2023-10-26

前言

打怪升级:第20天
在这里插入图片描述

vim编辑器的五种常见模式:命令模式、底行模式、插入模式、替换模式、视图模式(块模式)。


一、普通/命令模式

进入vim:vim+file,进入后默认处于命令模式。
退出vim:跳转底行模式查看。
注意:下文出现的 shift + g 等复合指令就是 G 。
vim -c cmd file: 在打开文件前,先执行指定的命令;
vim -r file: 恢复上次异常退出的文件;
vim -R file: 以只读的方式打开文件,但可以强制保存;
vim -M file: 以只读的方式打开文件,不可以强制保存;
vim -y num file: 将编辑窗口的大小设为num行;
vim + file: 从文件的末尾开始;
vim +num file: 从第num行开始;
vim +/string file: 打开file,并将光标停留在第一个找到的string上。
vim --remote file: 用已有的vim进程打开指定的文件。 如果你不想启用多个vim会话,这个很有用。但要注意, 如果你用vim,会寻找名叫VIM的服务器;如果你已经有一个gvim在运行了, 你可以用gvim --remote file在已有的gvim中打开文件。


1.文件中移动 - 1

hjkl
h:光标向左移动一格;
j:光标向下移动一格;
k:光标向上移动一格;
l:光标向右移动一格;
以上选项都可加 数字n,来进行“跳跃移动”。
在这里插入图片描述

2.文件中移动 - 2

shift + 6(^):到达光标所在行的开头;
shift + 4 ($):到达光标所在行的结尾。
gg:跳转到文件开头;
shift + g (G):跳转到文件结尾;
n + shift + g (G):跳转到第n行。
在这里插入图片描述


3.复制、粘贴、剪切、删除

复制、粘贴、剪切、删除
yy:复制光标所在行(放到寄存器中);
n + yy:复制从光标所在行开始的n行。
p:将寄存器中的内容粘贴到光标位置;
n + p:粘贴n遍。
dd:剪切光标所在行(直接将本行数据剪切到寄存器中,如果不进行粘贴,就可以当做删除操作使用);
n + dd:剪切从光标所在行开始的n行;
shift + d (D):剪切光标所在行从行首到行尾,与dd的一点区别在于:会留下一个空行;
n + shift + d:等同于n + dd。
在这里插入图片描述


4.行内删除

行内删除
x:从左往右删除一个字符,(删除光标所在位置的字符被删除的内容也会被放到寄存器中,可以进行粘贴);
n + x:删除本行中光标位置开始的n个字符。
shift + x(X):从右往左删除(删除光标前边的一个字符);
n + shift + x(X):从右往左删除前n个字符。
在这里插入图片描述


5.撤回

u:撤回,回到上一步;
ctrl + r:撤回撤回的撤回(哈哈,换句话说就是:撤回 u 的操作,也只能撤回 u 的操作);
注意:如果文件只进行保存,没有退出,则依然可以进行撤回;


6.替换

r + 字符ch:将光标所在位置字符替换成 字符ch
shift + r (R):替换光标所到位置的任意字符,直到按下 ESC为止(其实就是进入和退出替换模式)。
shift + ~:快速切换大小写
在这里插入图片描述


7.高亮选中

shift + 3 (#):所以相同的数据都会变成高亮;
shift + 冒号 + set nohlsearch:取消高亮;
我们也可以设置让编辑器只进行选择,不高亮,不过这些需要进行一些简单配置,且看下文。
在这里插入图片描述


8.逐单词移动 - 3

逐单词移动w、b、e
b:向前移动一个单词;
w:向后移动一个单词;
e:向后移动一个单词;
n + b:向前跳过n个单词。
n + w:向后跳过n个单词;
n + e:向后跳过n个单词;
b和w的光标会落在单词开头,e的光标则是落在单词末尾。
在这里插入图片描述


二、底行模式

shift + 冒号(:) :为进入底行模式;(更常用)
/ :直接一个反斜杠也可以进入底行模式;(两者前缀不同,使用情况不同)
ESC:退出底行模式。


1.退出vim

:w:写入(保存);
:q:退出(如果同时打开多个文件,退出的就是光标所在的文件);
:wq:写入并退出(保存并退出);
:q!:强制退出。


2.设置行号

:set nu:添加行号
:set nonu:去掉行号
在这里插入图片描述


3.替换

:%s/ dst / src / g
功能:把文件中所以的 dst 替换为 src
在这里插入图片描述


4.搜索

/ key (注意,斜杠前面不需要加冒号)
在这里插入图片描述


3.不退出vim的情况下进行操作

不退出vim,直接在底行模式下进行操作
! + commend,之后按任意键即可返回vim;
在这里插入图片描述


4.多文件操作

:vs + file:打开file文件;
可以打开两个及以上个文件,此时光标在哪个文件就是对哪个文件进行操作;
切换光标所在文件: 在命令模式下:按住Ctrl 键不动,连续按两下 w(这只是其中一种较为简单的方法);
退出操作同上。
在这里插入图片描述

切换文件:在这里插入图片描述


三、替换模式

shift + r 为进入替换模式。
ESC:退出替换模式。
在这里插入图片描述


四、插入模式

插入模式就是一个编辑器。
以下内容重在见过:

i:进入插入模式;
shift + i (I):光标移动到行首后进入插入模式;
a:光标向后移动一格后进入插入模式;
shift + a (A):光标移动到行尾后进入插入模式;
o:向下另起一行后进入插入模式;
shift + o (O):向上另起一行后进入插入模式;
s:删除光标位置字符后进入插入模式;
shift + s (S):清空当前行后进入插入模式;
cc:清空当前行后进入插入模式;
shift + c (C):清空光标位置及本行后面全部内容后进入插入模式;
c + w:清空当前单词到词尾处后进入插入模式;
c + n + w:清空当前n个字符后进入插入模式;
等等。


ESC:退出底行模式。
在这里插入图片描述


五、视图模式

v:进入视图模式。(visual)
shift + v:选择一行,进入视图模式。
Ctrl + v:选择一个字符,进入视图模式。
用法:一次可以选择一块内容进行操作。
eg:
多行注释:Ctrl + v 进入视图模式, 上下左右选择块区域,shift + i 进入插入模式,输入 // ,按ESC退出插入模式,多行注释完成。
取消多行注释:Ctrl + v 进入视图模式,上下左右选择块区域,按 d 删除注释符号。
在这里插入图片描述

补充:通过替换的方式进行多行注释
多行注释:shift+冒号进入底行模式,输入:开始行号,结束行号s#^#//#g
取消注释:shift+冒号进入底行模式,输入: 开始行号,结束行号s#^//##g
在这里插入图片描述


总结

  1. 如果不知道自己当前所处为那个模式,就可以多按几次 ESC,最终都会到达命令模式
  2. 以上动图中所使用的编译器为熊猫自行配置的,如果想要设置一个属于自己的独特的编辑器,需要建立一个.vimrc文件,在里面进行设置后功能都会即时生效;
  3. 当然这里更推荐直接使用大佬们设置好的配置文件,否则对于新手来说这些配置也是一件相当麻烦的事情呢,
    这里熊猫为大家找了一份配置文件,操作十分简单,感兴趣的朋友可以看一看:vim的强大配置文件
  4. 想要了解更多的朋友可以继续参看这篇文章:vim命令大全
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【vim工具的使用】 的相关文章

  • 在 Perl 中如何接受多个 TCP 连接?

    我对 Linux 的 Perl 脚本有疑问 它的主要目的是成为 3 个应用程序之间的中间人 它应该做什么 它应该能够等待 UDP 文本 不带空格 udp port 当它收到 UDP 文本时 它应该将其转发到连接的 TCP 客户端 问题是我的
  • Vim:用字符填充行

    如何在一行或多行末尾重复添加字符 将行填充到特定列 例如 x 代表第 40 列 不是该行上的字符 并且文本后没有空格或制表符 line one x line two x line three x line eleventy billion
  • 如何在vim中每隔几行添加一行

    我想使用 vim 编辑器在文件 大约 1000 行 中每 3 行添加一行 有人可以帮我吗 谢谢 艾丽莎 有一个 vim 特定的正则表达式可以做到这一点 s n n n 0 r g s 是 vim ex 命令来替换整个文件 n 是包含行尾的一
  • 如何将回车符作为字符添加到文件中?

    我想要一个像这样的字符串 blablbabla
  • gcc 中“-l”选项的放置

    我在放置时遇到一些问题 l使用时的选项gcc 这是一个用于重现问题的精简版本 t c include
  • 如何在Linux shell脚本中将文本文件中的两行合并到同一行中

    我使用 wget 命令从 Nagios 下载了它的 html 文件 然后使用以下代码将该 html 文件转换为 Textfile html2text width 180 file html gt a txt 然后我剪切了前 10 行 因为我
  • 包名中的“dev”后缀?

    使用 apt get 时 我看到一些软件包的名称后面有一个 dev 后缀 libreadline5 libreadline dev zlib1g zlib1g dev 这些到底是什么 我应该安装它们吗 你需要这些编译并链接因为它们提供了要链
  • Linux C 如何打开目录并获取文件描述符

    include
  • 请求失败的错误:GLXBadDrawable (C++ bgfx)

    我试图用 glfw 和 bgfx 创建一个紫色窗口作为我的游戏引擎的起点 但是在启动二进制文件时它会抛出一个错误 我正在尝试创建紫色窗口 如下图所示 我正在使用 cmake 错误是 anuj fedora D C C c o build g
  • `/dev/urandom` 适合模拟目的吗?

    似乎在类 Unix 系统中使用纯 C fread from dev urandom是提取高质量随机字节的最简单方法 我需要运行一个每秒需要大约 10k 32 位随机数的模拟 并且可能会运行几天 是 dev urandom可以用于此目的吗 当
  • 为什么我的 sed 命令在使用变量时失败?

    使用 bash 我尝试插入日期变量并搜索该日期的日志文件 然后将输出发送到文件 如果我像这样对日期进行硬编码 它会起作用 sed n Nov 22 2010 p file gt log file 但如果我这样做就会失败 date Nov 2
  • 使用 M1 在 dockerized Linux 上安装节点画布

    我有以下Dockerfile我在 MacBook Air M1 上运行 所以在 docker 中我有带有 M1 的 linux FROM node 16 7 0 WORKDIR work CMD while true do sleep 10
  • 在插入模式下移至行首

    我知道我可以使用 Home in insert mode Esc i to exit insert mode and enter it again effectively going to the beginning of line But
  • 如何在生产环境中运行 spring boot 可执行 jar?

    Spring Boot 的首选部署方法是通过内部包含 tomcat 的可执行 jar 文件 它是从一个简单的开始java jar myapp jar 现在 我想将该 jar 部署到 EC2 上的 Linux 服务器上 我是否遗漏了某些内容
  • x86-64 Linux 中不再允许使用 32 位绝对地址?

    64 位 Linux 默认使用小内存模型 将所有代码和静态数据置于 2GB 地址限制以下 这确保您可以使用 32 位绝对地址 旧版本的 gcc 对静态数组使用 32 位绝对地址 以便节省相对地址计算的额外指令 然而 这不再有效 如果我尝试在
  • 有没有一个 vim 命令可以重新定位选项卡?

    如何更改当前选项卡的位置 顺序Vim 例如 如果我想将当前选项卡重新定位为第一个选项卡 您可以使用以下命令重新定位选项卡 tabm使用相对或零索引绝对参数 绝对 将选项卡移至位置 i tabm i 相对的 将选项卡 i 位置向右移动 tab
  • accept() 创建一个新套接字是什么意思?

    我的问题基于以下理解 套接字由 ip port 定义 服务器和客户端都有自己的套接字 Socket连接由五组server ip server port client ip client port protocol定义 套接字描述符是标识套接
  • Alsa:如何在 2 个输出上复制流并保存系统配置?

    我的声卡是 Audigy SE SB0570 我想不仅在扬声器上而且在耳机上同时播放相同的立体声流 我在空的 asoundrc 上尝试这个配置 pcm quad type multi slaves a pcm hw 0 0 green ho
  • Gnu 时间和格式化输出

    我想使用 gnu time 来测量一些小 c 程序的运行时间 人 中写道 f FORMAT format FORMAT Use FORMAT as the format string that controls the output of
  • Linux命令:如何仅“查找”文本文件?

    经过几次谷歌搜索后 我得出的结论是 find my folder type f exec grep l needle text exec file grep text 这非常不方便 并且会输出不需要的文本 例如 mime 类型信息 还有更好

随机推荐

  • python3 华为推送系统接入

    只是后台对接华为推送服务接口对接 前端集成还是请参考官方文档 根据AppID和AppSecret 获取请求token 根据token发送http请求 获取token 请注意token的有效时间 不避免频繁获取 def get access
  • 基于深度学习的小学语文“输出驱动”教学研究课题方案

    目录 一 课题研究的背景与意义 二 课题研究理论依据 三 国内外研究情况
  • CheckStyle使用手册

    介绍 CheckStyle是SourceForge下的一个项目 提供了一个帮助JAVA开发人员遵守某些编码规范的工具 它能够自动化代码规范检查过程 从 而使得开发人员从这项重要 但是枯燥的任务中解脱出来 CheckStyle默认提供一下主要
  • 用VC 6.0实现串行通信的三种方法

    摘要 本文介绍了在Windows平台下串行通信的实现机制 讨论了根据不同的条件用Visual C 设计串行通信程序的三种方法 并结合实际 实现对温度数据的接收监控 在实验室和工业应用中 串口是常用的计算机与外部串行设备之间的数据传输通道 由
  • 数据挖掘常用的基本技术,主要有哪些?

    1 统计学 统计学虽然是一门 古老的 学科 但它依然是最基本的数据挖掘技术 特别是多元统计分析 如判别分析 主成分分析 因子分析 相关分析 多元回归分析等 2 聚类分析和模式识别 聚类分析主要是根据事物的特征对其进行聚类或分类 即所谓物以类
  • 【转】多层级的makefile编写——递归调用makefile

    转自 多层级的makefile编写 递归调用makefile wangyuling1234567890的专栏 博客频道 CSDN NET http blog csdn net wangyuling1234567890 article det
  • 测试框架pytest教程(7)实现 xunit 风格的setup

    pytest支持setup和teardown 对于使用unittest和nose框架的用户来说对这些很熟悉 但是在pytest可以使用功能更强大的fixture来实现固定装置 模块级别 如果单个模块中有多个测试函数和测试类 您可以选择实现以
  • 计算机网络相关知识点

    计算机网络知识点 1 流量单位换算 2 概念和单位换算 3 计算机网络概述 4 例题 本文参考资料一 GitHub上的博客CS Notes 本文参考资料二 百度文库计算机网络知识点文档 1 流量单位换算 计算机中表示容量的单位有B KB M
  • MySQL5.7 下载安装

    一 下载 尽量使用压缩包解压缩方式安装 压缩包的解压后配置下环境变量就能使用 如果使用安装程序 msi安装程序 安装 卸载起来会比较麻烦 下载地址链接 各版本下载链接 二 安装 1 解压缩 下载的zip压缩包解压缩 我的mysql解压缩安装
  • AttributeError: ‘str‘ object has no attribute ‘parse‘

    今天 使用python提取版本号 pip3 install packaging from packaging import version A 3 5 2 version parse A 发现报错 AttributeError str ob
  • golang开发:类库篇(三)命令行工具cli的使用

    为什么要使用命令行 觉得这个问题不应该列出来 又觉得如果初次进行WEB开发的话 可能会觉得所有的东西都可以使用API去做 会觉得命令行没有必要 其实 一个生产的项目命令行是绕不过去的 比如运营需要导出报表 统计下付费用户 服务不稳定修改下订
  • 推荐引擎系统架构

    本文从互联网收集并整理了推荐系统的架构 其中包括一些大公司的推荐系统框架 数据流存储 计算 模型应用 可以参考这些资料 取长补短 最后根据自己的业务需求 技术选型来设计相应的框架 后续持续更新并收集 界面UI那一块包含3块东西 1 通过一定
  • vue3高德地图点击标记显示自定义提示框/地图平移过渡(panBy/panTo)

    上一篇文章有讲到点击标记显示窗口信息 但是在实际的项目需求中我们可能需要在某一个固定的地方显示自定义的内容 这里就需要我们自己动手了 4条消息 vue3高德地图多个点标记 窗口信息 点标记自定义图片不显示问题 奋斗不息 编码不止 的博客 C
  • 【MySQL】八,角色管理

    创建角色 引入角色的目的是方便管理拥有相同权限的用户 恰当的权限设定 可以确保数据的安全性 语法 CREATE ROLE role name host name role name host name 创建一个经理的角色 create ro
  • 基于Uniapp+SpringBoot+Vue的电影交流平台小程序设计与实现(源码+lw+部署文档+讲解等)

    前言 博主介绍 全网粉丝10W CSDN特邀作者 博客专家 CSDN新星计划导师 全栈领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java 小程序技术领域和毕业项目实战 精彩专栏 推荐订阅 2023 20
  • FreeRTOS笔记(九)定时器

    定时器Timer 软件定时器是基于系统时钟中断且由软件来模拟的定时器 当经过设定的Tick 时钟计数值后会触发用户定义的回调函数 软件定时器不占用单片机宝贵的硬件资源和CPU资源 FreeRTOS提供了完善的软件定时器的支持 为了启用软件定
  • JAVA对象的toString方法

    一切类都是Object的子类 Object有toString方法 因此所有对象都有toString方法 打印一个对象时 打印的就是这个对象的toString方法返回值 值为 类名 hashCode 因此很多时候需要程序员重写此方法 推荐写法
  • Python运维开发(CMDB资产管理系统)——Python基础数据类型

    Python基础数据类型 字符串 可以通过单引号 双引号 三个双引号来表示 布尔 True和False 整数 浮点数 列表 定义一个列表 列表常用的一些函数 append 向列表中添加元素 元素可以是整数 浮点数 字符串等类型 count
  • 云财经服务器维护,云财经服务器维护

    云财经服务器维护 内容精选 换一换 云耀云服务器适用于对CPU 内存 硬盘空间和带宽无特殊要求 服务一般只需要部署在一台或少量的服务器上 一次投入成本少 后期维护成本低的场景 例如网站开发 Web应用 推荐使用云耀云服务器 主要提供均衡的计
  • 【vim工具的使用】

    目录 前言 一 普通 命令模式 1 文件中移动 1 2 文件中移动 2 3 复制 粘贴 剪切 删除 4 行内删除 5 撤回 6 替换 7 高亮选中 8 逐单词移动 3 二 底行模式 1 退出vim 2 设置行号 3 替换 4 搜索 3 不退