Vim学习笔记

博客主页:https://tomcat.blog.csdn.net
博主昵称:农民工老王
主要领域:Java、Linux、K8S
期待大家的关注💖点赞👍收藏⭐留言💬
家乡

目录

  • 模式介绍
  • 指令概览
  • 启动退出
  • 移动光标
  • 插入
  • 删除
  • 复制
  • 替换
  • 撤销
  • 搜索
  • 信息
  • 设置
  • 外部命令
  • 技巧

模式介绍

Vim有以下四种主要模式:

  • 正常(normal)模式(也称为普通模式),缺省的编辑模式;如果不加特殊说明,一般提到的命令都直接在正常模式下输入;在任何其他模式中,都可以通过键盘上的Esc键回到正常模式。
  • 插入(insert)模式,输入文本时使用;比如在正常模式下键入 i(insert)或 a(append)即可进入插入模式。
  • 可视(visual)模式,用于选定文本块;教程中已经提到可以用键v(小写)来按字符选定,Vim里也提供其他不同的选定方法,包括按行和按列块。
  • 命令行(command-line)模式,用于执行较长、较复杂的命令;在正常模式下键入冒号(:)即可进入该模式;使用斜杠(/)和问号(?)开始搜索也算作命令行模式。命令行模式下的命令要输入回车键( Enter)才算完成.

按下 ESC 键会带您回到正常模式或者撤消一个不想输入或部分完整的命令。

此外,Vim也有个选择(select)模式,与普通的Windows编辑器行为较为接近,选择内容后再输入任何内容,将会替换选择的内容。在以可视模式和选择模式之一选定文本块之后,可以使用Ctrl-G切换到另一模式。这个模式主要是为了模拟 Windows 编辑器的行为,并不是Vim的主要用法,使用它反而会给Vim里的自动化带来麻烦,所以我们也就不多作介绍了。

指令概览

基础指令
请添加图片描述
完全指令
请添加图片描述

启动退出

  • 进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车>
  • 退出 Vim 编辑器,请输入 :q! <回车> 放弃所有改动。或者输入 :wq <回车> 保存改动。

移动光标

h:左移
j:下行
k:上行
l :右移

  • 0 (数字零): 移动光标到行首。
  • 数字+w:如2w,使光标右移两个单词,以单词后的空格为计数的标准,计数包括光标本身的单词,光标将停在目标单词的第一个字符。
    在这里插入图片描述
  • 数字+e:如2e,使光标右移两个单词,以单词本身为计数的标准,计数包括光标本身的单词,光标将停在目标单词的最后一个字符。
    在这里插入图片描述

G:可以使得当前光标直接跳转到文件最后一行。
gg:光标直接跳转到文件第一行。
%:查找配对的括号,包含( )、[ ]、{ }。

插入

i:在光标所在字符前开始插入
a:在光标所在字符后开始插入
o:在光标所在行的下面另起一新行插入
s:删除光标所在的字符并开始插入
I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入
A:在光标所在你行的行尾开始插入
O:在光标所在行的上面另起一行开始插入
S:删除光标所在行并开始插入

删除

以下所有删除实际上是剪切,删除的内容会被存储在剪切板中。可以通过p进行粘贴。

x:删除光标所在位置的字符
de:删除 [ 光标所在位置,光标所在单词的最后一个字符)
dw:删除 [ 光标所在位置,下一个单词的第一个字符)
d$:删除 [ 光标所在位置,本行最后一个字符]
dd:删除该行。
cw / ce:删除 [ 光标所在位置,光标所在单词的最后一个字符),然后在光标所在位置进入编辑模式。
c$:删除 [ 光标所在位置,本行最后一个字符],然后在光标所在位置进入编辑模式。

复制

按v进入可视模式。
移动光标,以选中需要复制的文本。
按y复制。
将光标移动到目标位置
按p粘贴

替换

r:替换光标所在字符,输入替换后的字符后,立刻退出编辑模式。
R:替换光标所在字符,输入替换后的字符后,光标向右移动一个位置,准备替换下一个字符,按才退出替换的状态。
:s/old/new :在一行内替换头一个字符串 old 为新的字符串 new。
:s/old/new/g 在一行内替换所有的字符串 old 为新的字符串 new。
:#,#s/old/new/g:替换两行之间出现的每个匹配串,其中 #,# 代表的是替换操作的若干行中 首尾两行的行号。
:%s/old/new/g:在文件内替换所有的字符串 old 为新的字符串 new。
:%s/old/new/gc:会找到整个文件中的每个匹配串,并且对每个匹配串,提示是否进行替换。

撤销

u (小写的u):撤消以前的操作。
U (大写的U):撤消在一行中所做的改动。
CTRL-R:撤消以前的撤消命令,恢复以前的操作结果。

搜索

  • 在正常模式下输入 / 字符。您此时会注意到该字符和光标都会出现在屏幕底部,这跟 : 命令是一样的。
  • 接着输入 待查找的字符串,然后按回车键。
  • n键查找下一个。按N查找上一个。
  • 如果您想逆向查找字符串,请使用 ? 代替 / 进行。

信息

CTRL-G:显示当前编辑文件中当前光标所在行位置以及文件状态信息。

设置

set number: 显示行号,可简写为set nu
set nonumber:关闭行号,可简写为 set nonu
set list:把制表符显示为^I ,用$标示行尾。
set readonly:设置只读。
set tabstop=4:设置 tab space 为4个空格,可简写为set ts=4,此处的4可以换为任意正整数。

外部命令

输入! 然后紧接着输入一个外部命令可以执行该外部命令。

技巧

Vim的行内编辑可以归纳为[n]at

  • [n]是可选的量词,表示处理对象的数量。
  • a表示action,可以是c(change),y(yank),d(delete)。
  • t表示target,可以是w(word),e(end),$(行尾),0(行首)。
  • c是change,执行c动作后会进入编辑模式,d是delete,执行d动作后不会进入编辑模式,注意二者区别,灵活使用。
  • w和e的区别在于如何处理空格,w把空格当做当前word的一部分,e则不处理空格。
  • 关于word间空格的一个例外是,c不处理,所以cw和ce是一样的,而y,d则会处理空格,所以yw,ye,或dw,de不一样。
  • W或E则表示在action处理时包括标点。

如需转载,请注明本文的出处:农民工老王的CSDN博客https://blog.csdn.net/monarch91 。

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

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

相关文章

Redis缓存穿透、击穿和雪崩

面试高频 服务的高可用问题&#xff01; 在这里我们不会详细的区分析解决方案的底层&#xff01; Redis缓存概念 Redis缓存的使用&#xff0c;极大的提升了应用程序的性能和效率&#xff0c;特别是数据查询方面。但同时&#xff0c;它也带来了一些问题。其中&#xff0c;最要…

Linux shell编程学习笔记4:修改命令行提示符格式(内容和颜色)

一、命令行提示符格式内容因shell类型而异 Linux终端命令行提示符内容格式则因shell的类型而异&#xff0c;例如CoreLinux默认的shell是sh&#xff0c;其命令行提示符为黑底白字&#xff0c;内容为&#xff1a; tcbox:/$ 其中&#xff0c;tc为当前用户名&#xff0c;box为主机…

【JVM】并发可达性分析-三色标记算法

欢迎访问&#x1f44b;zjyun.cc 可达性分析 为了验证堆中的对象是否为可回收对象&#xff08;Garbage&#xff09;标记上的对象&#xff0c;即是存活的对象&#xff0c;不会被垃圾回收器回收&#xff0c;没有标记的对象会被垃圾回收器回收&#xff0c;在标记的过程中需要stop…

LabVIEW开发光学相干断层扫描系统

LabVIEW开发光学相干断层扫描系统 癌症是一种以异常或受损细胞无法控制生长为特征的疾病&#xff0c;是世界上导致死亡的主要原因之一。以前的研究人员已经表明&#xff0c;患病时组织力学会发生变化。能够同时量化和可视化组织力学和细胞行为有可能弥合我们对这两种癌症驱动特…

Oracle - 多区间按权重取值逻辑

啰嗦: 其实很早就遇到过类似问题&#xff0c;也设想过&#xff0c;不过一致没实际业务需求&#xff0c;也就耽搁了&#xff1b;最近有业务提到了&#xff0c;和同事讨论&#xff0c;各有想法&#xff0c;所以先把逻辑整理出来&#xff0c;希望有更好更优的解决方案&#xff1b;…

C++简单实现AVL树

目录 一、AVL树的概念 二、AVL树的性质 三、AVL树节点的定义 四、AVL树的插入 4.1 parent的平衡因子为0 4.2 parent的平衡因子为1或-1 4.3 parent的平衡因子为2或-2 4.3.1 左单旋 4.3.2 右单旋 4.3.3 先左单旋再右单旋 4.3.4 先右单旋再左单旋 4.4 插入节点完整代码…

闪击笔试题

选择题 ping命令不涉及什么协议? A&#xff1a;DNS B: TCP C: ARP D: ICMP B&#xff0c;ping基于ICMP协议&#xff0c;解析路由会用到ARP和DNS a、b、c三人参加学科竞赛&#xff0c;每个学科按一二三名次给x、y、z分&#xff0c;已知a得22分&#xff0c;b和c得9分&#xf…

面试问到MySQL模块划分与架构体系怎么办

面试问到Mysql模块划分与架构体系怎么办 文章目录 1. 应用层连接管理器&#xff08;Connection Manager&#xff09;安全性和权限模块&#xff08;Security and Privilege Module&#xff09; 2. MySQL服务器层2.1. 服务支持和工具集2.2. SQL Interface2.3. 解析器举个解析器 …

[Go 夜读 第 148 期] Excelize 构建 WebAssembly 版本跨语言支持实践

Excelize 是 Go 语言编写的用于操作电子表格文档的基础库&#xff0c;支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&#xff0c;高度兼容带有样式、图片 (表)、透视表、切片器等复杂组件的文档&#xff0c;并提供流式读写支持&#xff0c;用于处理包含大规模数据的工…

【MATLAB第78期】基于MATLAB的VMD-SSA-LSTM麻雀算法优化LSTM时间序列预测模型

【MATLAB第78期】基于MATLAB的VMD-SSA-LSTM麻雀算法优化LSTM时间序列预测模型 一、LSTM data xlsread(数据集.xlsx);% [x,y]data_process(data,15);%前15个时刻 预测下一个时刻 %归一化 [xs,mappingx]mapminmax(x,0,1);xxs; [ys,mappingy]mapminmax(y,0,1);yys; %划分数据 n…

数字时代古文的传承———云南文化瑰宝“爨文化“(我为家乡发声)

文章目录 前言⭐ "爨"意味着什么&#xff0c;究竟何为"爨文化"&#xff1f;⭐ 爨文化鲜明的特点1.经济生活2.政治生活3.文化艺术 ⭐ 数字时代古文的传承与传播1.藏品数字化2.建立数据库3.传播大众化 前言 爨文化是继古滇文化之后崛起于珠江正源南盘江流域…

【C++】unordered_set、unordered_map的介绍及使用

unordered_set、unordered_map的介绍及使用 一、unordered系列关联式容器二、unordered_map and unordered_multimap1、unordered_map的介绍2、unordered_map的使用&#xff08;1&#xff09;定义&#xff08;2&#xff09;接口使用 3、unordered_multimap 二、unordered_set a…

SpringBoot的excel模板导出

Word的模板导出(参考&#xff1a;https://easyexcel.opensource.alibaba.com/docs/current/quickstart/fill) 创建有两个sheet的excel文件模板 将模板文件放入resource\templates/doc下使用 public void exportUavInfoExcel(HttpServletResponse response, CaseExportRPO cas…

NEON优化:性能优化经验总结

NEON优化&#xff1a;性能优化经验总结 1. 什么是 NEONArm Adv SIMD 历史 2. 寄存器3. NEON 命名方式4. 优化技巧5. 优化 NEON 代码(Armv7-A内容&#xff0c;但区别不大)5.1 优化 NEON 汇编代码5.1.1 Cortex-A 处理器之间的 NEON 管道差异5.1.2 内存访问优化 Reference: NEON优…

【MySQL进阶】--- 存储引擎的介绍

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、什么…

C++指针的使用

文章目录 1.C指针1.1 定义指针1.2 使用指针 2.空指针和野指针2.1 空指针2.2 野指针 3.指针所占空间4.使用const修饰指针4.1 const修饰指针4.2 const修饰常量4.3 const 既修饰指针也修饰常量 5.指针操作数组6.指针做函数参数7.使用指针知识实现冒泡排序 1.C指针 指针其实就是一…

ciscn_2019_s_9

ciscn_2019_s_9 Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments32位&#xff0c;啥也没开&#xff0c;开心愉悦写shellcode int pwn() {char s[24]; // [esp8…

cesium 雷达扫描 (波纹线性雷达扫描效果)

cesium 雷达扫描 (波纹线性雷达扫描效果) 1、实现方法 使用ellipse方法加载圆型,修改ellipse中material方法来实现效果 2、示例代码 2.1 <!DOCTYPE html> <html lang="en"><head>&l

UE学习记录06----根据Actor大小自适应相机位置

背景&#xff1a; staticMesh 会根据业务需要随时变化&#xff0c;然后通过staticMesh的大小自适应相机位置&#xff0c;捕捉画面用来预览该模型&#xff0c;使模型在画布中不会太大导致显示不全&#xff0c;也不会太小 参考&#xff1a; UE实现相机聚焦物体功能_右弦GISer的…

国庆10.1

用select实现服务器并发 ser #include <myhead.h> #define ERR_MSG(msg) do{\fprintf(stderr, "__%d__", __LINE__);\perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.1.205" //本机…