首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么宏中的换行符在Vim中会被解释为‘j`?

在Vim中,宏(Macro)是一种记录和重放操作序列的功能。当我们录制宏时,Vim会记录我们在编辑器中执行的一系列按键操作,并将其保存为一个宏。然后,我们可以通过执行该宏来重放这些按键操作。

在Vim中,宏的录制和执行是通过一系列的按键来触发的。其中,q命令用于开始和停止录制宏,后面跟着一个指定的寄存器名,用于保存宏的内容。例如,我们可以使用qa来开始录制一个宏,并将其保存到a寄存器中。

当我们录制宏时,Vim会将我们执行的按键操作逐个记录下来,并保存在指定的寄存器中。这些按键操作包括换行符(Enter键)。

在Vim中,j键是用于向下移动光标到下一行的命令。当我们录制宏时,如果我们在宏的按键序列中包含了换行符(Enter键),Vim会将其解释为j键,即向下移动光标到下一行。

这种行为是为了方便宏的录制和重放操作。通过将换行符解释为j键,我们可以在录制宏时,使用换行符来分隔不同的操作步骤,使得宏的录制更加清晰和易于理解。

需要注意的是,这种行为只在录制宏时才会发生。在正常的编辑模式下,换行符仍然会被解释为换行符,而不是j键。

总结起来,宏中的换行符在Vim中会被解释为j键,是为了方便宏的录制和重放操作。这种行为只在录制宏时才会发生,而在正常的编辑模式下,换行符仍然会被解释为换行符。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linuxvim用法

移动光标 vi 可以直接用键盘上光标来上下左右移动,但正规 vi 是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。...A) 列出行号 「set nu」:输入「set nu」后,会在文件每一行前面列出行号。...B) 跳到文件某一行 「#」:「#」号表示一个数字,冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字 15,再回车,就会跳到文章第 15 行。...5、vi 命令列表 1、下表列出命令模式下一些键功能: h 左移光标一个字符 l 右移光标一个字符 k 光标上移一行 j 光标下移一行 ^ 光标移动至行首 0 数字“0”,光标移至文章开头...沈唁志|一个PHPer成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:Linuxvim用法

2.9K31

关于vim查找和替换

1,查找 normal模式下按下/即可进入查找模式,输入要查找字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。...Vim查找支持正则表达式,例如/vim$匹配行尾"vim"。 需要查找特殊字符需要转义,例如/vim\$匹配"vim$"。...set smartcase 将上述设置粘贴到你~/.vimrc,重新打开Vim即可生效 4,查找当前单词 normal模式下按下*即可查找光标所在单词(word), 要求每次出现前后为空白字符或标点符号...例如当前为foo, 可以匹配foo barfoo,但不可匹配foobarfoo。 这在查找函数名、变量名时非常有用。 按下g*即可查找光标所在单词字符序列,每次出现前后字符无要求。...^E与^Y是光标移动快捷键,参考: Vim如何快速进行光标移 大小写敏感查找 查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。

24.3K40
  • 只需Vim或Neovim编辑器打开文件,您Linux就会被黑客攻击

    Linux系统上,Vim编辑器允许用户创建,查看或编辑任何文件,包括文本,编程脚本和文档。...Vim和Neovim代码执行缺陷 Razmjou 发现了Vim编辑器处理“模型”方式一个缺陷,默认情况下,该功能可以自动查找并应用文档创建者提到一组自定义首选项,这些首选项位于文档起始行和结束行附近...因此,只需使用Vim或Neovim打开一个看起来无辜特制文件,攻击者就可以Linux系统上秘密执行命令并对其进行远程控制。...Vim维护者(补丁8.1.1365)和Neovim(v0.3.6发布)已经发布了两个实用程序更新以解决问题,用户应该尽快安装。...除此之外,研究人员还建议用户: 禁用模型功能, 禁用“modelineexpr”以禁止modelines中使用表达式, 使用“securemodelines插件”,这是Vim模型安全替代品。

    1.7K20

    Vim 编辑器开发 Python 应用 Vim 插件

    Python-mode 是一个 Vim 插件,它使你能够 Vim 编辑器更快利用包括 pylint、rope、pydoc、pyflakes、pep8、autopep8、pep257 和 mccable...推荐阅读:如何用 Bash-Support 插件将 Vim 编辑器打造成编写 Bash 脚本 IDE 这个插件包含了所有你 Vim 编辑器可以用来开发 Python 应用特性。...Python 缩进 能够 Vim 运行 Python 代码 能够添加/删除断点 支持 Python 对象 Vim 动作和操作符 能够在运行同时检查代码(pylint、pyflakes、pylama... Debian 和 Ubuntu 安装 Python-mode 另一种 Debian 和 Ubuntu 安装 Python-mode 方法是使用 PPA,就像下面这样 $ sudo add-apt-repository...本教程,我向你们展示了如何在 Linux 中使用 Python-mode 来配置 Vim 。请记得通过下面的反馈表来和我们分享你想法。

    1.7K80

    正则表达式: Vim 异于 Javascript 用法

    对于前后端各种编程语言中正则表达式,开发者们已经再熟悉不过了;但如果你使用 vim 编辑器,同样会在命令模式下遇到需要用正则实现搜索替换情景。...今天我们就来稍微归纳一下 vim 较独特正则语法,为更好地使用这种编辑神器厘清障碍。...本文适用于较熟悉正则表达式和 vim 编辑器读者,入门选手推荐先阅读以下文章: JS正则表达式--从入门到精分 小览 ES6-ES2019 中正则表达式新发展 初探WSL设置vim前端开发环境...搜索和替换标记 除了 g、i 之外, vim 还可以使用 c,用来交互式地对匹配项逐个替换。...s/\%Vcat/dog/g 会把选中范围内 'cat' 换成 'dog' 可视模式按 ESC 变为命令模式时,命令输入行会自动生成 ',要先删去这一部分 替换并改变大小写 替换段落

    1.8K20

    Crawler4j多线程网页抓取应用

    本文将探讨如何利用Crawler4j进行多线程网页抓取,以及如何通过代码实现这一过程。多线程抓取重要性进行网页抓取时,单线程爬虫可能会遇到效率低下问题,尤其是面对需要抓取大量页面的网站时。...main方法,我们创建了一个CrawlConfig实例来配置爬虫,并设置了存储路径。然后,我们创建了一个固定大小线程池,大小为THREAD_COUNT,这是我们想要线程数。...注意事项使用Crawler4j进行多线程抓取时,需要注意以下几点:1抓取策略:合理设置抓取间隔和抓取深度,避免对目标网站造成过大压力。...2异常处理:visit方法添加异常处理逻辑,以确保爬虫稳定性。3资源管理:确保爬虫完成后释放所有资源,例如关闭线程池和存储文件。...4遵守Robots协议:尊重目标网站Robots协议,合法合规地进行网页抓取。结论通过本文介绍和示例代码,我们可以看到Crawler4j多线程网页抓取应用是高效且灵活

    9210

    为什么StringJava是不可变

    String Java 是不可变。 不可变类只是一个无法修改其实例类。 创建实例时,将初始化实例所有信息,并且无法修改信息。 不可变类有许多优点。...本文总结了为什么 String 设计为不可变。 这篇文章从内存,同步和数据结构角度说明了不变性概念。 1. 字符串池 字符串池(String intern pool)是方法区域中特殊存储区域。...如果字符串是可变,则使用一个引用更改字符串将导致其他引用错误。 2. 缓存哈希码 字符串哈希码经常在 Java 中使用。 例如, HashMap 或 HashSet 。...String类,它具有如下代码: private int hash;//this is used to cache hash code. 3....不可变保证了线程安全 由于无法更改不可变对象,因此可以多个线程之间自由共享它们。 这消除了进行同步要求。

    1.3K20

    J Med Chem|静电互补基于结构药物设计应用

    2022年5月5日,Astex Pharmaceuticals科学家们J Med Chem杂志上对静电势计算在药物设计应用进行了综述,并且利用6个具体例子阐明了ESP计算对于基于结构药物设计改善和指导意义...基于结构药物发现,优化静电互补是提高分子对特定蛋白靶点亲和力重要策略。...FXa抑制剂和蛋白静电势表面 寻求优化S4口袋相互作用同时,也有降低化合物亲油性愿望,因此将化合物4正氟苯基替换为吡啶,末端芳环正位上安装一系列取代基,得到如表1一系列化合物。...从所讨论例子也可以清楚地看到,虽然优化静电互补好处是显而易见,但这种技术药物化学群体应用是有限。...Electrostatic Complementarity in Structure-Based Drug Design[J].

    1.4K20

    SFFAI 分享 | 李扬 :二阶信息图像分类应用

    1、导读 ---- 此次分享文章主要关于二阶信息图像分类应用。从Alexnet起,深度神经网络飞速发展,取得了一系列骄人成绩。总体来说,深度分类网络主要分为两个部分:特征提取和分类器。...2、分享者简介 ---- 李扬,北京大学信息科学技术学院在读硕士,本科毕业于北京科技大学,2018年MS COCO Panoptic Segmentation Contest PKU_360团队(第三名...目前主要研究兴趣点在于图像object detection。希望可以结识更多的人,彼此分享,共同交流。...预处理目的在于保证迭代收敛,具体可以参考论文中分析;由于预处理过程改变了协方差矩阵特征值大小,为了消除这一影响,引入后处理操作,将除掉特征值大小乘回来,实验表明,后处理这个操作也是十分关键。...4、总结 ---- 就个人而言,二阶信息使用帮助我更好理解细分类问题,为什么BCNN细分类问题中可以取得显著效果。

    36320

    Java为什么不同返回类型不算方法重载?

    本文已收录《Java常见面试题》:https://gitee.com/mydb/interview 方法重载是指在同一个类,定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载...doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...: 那为什么返回类型不能做为方法签名一部分呢?...匹配原则5:可变参数匹配 最后将代码方法删除只剩一个可选参数,实现代码如下: public class OverloadExample { public static void main(...总结 同一个类定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载。方法重载典型使用场景是 String valueOf 方法,它有 9 种实现。

    3.4K10

    vuev-for,key为什么不能用index?

    写在前面在前端,主要涉及基本上就是 DOM相关操作 和 JS,我们都知道 DOM 操作是比较耗时,那么我们写前端相关代码时候,如何减少不必要 DOM 操作便成了前端优化重要内容。...虚拟DOM(virtual DOM) jQuery 时代,基本上所有的 DOM 相关操作都是由我们自己编写(当然博主是没有写过 jQuery 滴,可能因为博主太年轻了吧,错过了 jQuery 大法时代...DOM 更新操作Vue 源码 diff 算法patch.js 路径Vue diff 算法相关代码主要在 patch.js 文件,路径如下图图片patch 函数图片1、如果新节点不存在(vnode...,如果定义属性非常多的话,触发更新将会导致非常大性能损耗,因此,使用 v-for 时候,建议使用类似 id 这种唯一标识字段替代 index,避免不必要性能损耗!...,体会到了前端对于性能极致追求,通过通读 vdom 源码,基本能够从更加深刻角度去理解采用 VDOM 目的,以及 key 值 diff 算法真正作用,也能够从更加底层角度理解为什么不推荐使用

    1K10

    Log4j 2.0开发高级使用详解—默认级别(二)

    Log4j 经过几年发展之后,终于迎来了它姊妹版本Log4j 2.0 。...强调可重用组件开发今天,除了自己从头到尾开发一个可重用日志操作类外,Apache为我们提供了一个强有力日志操作包-Log4j。重大升级必须带来重大特性。...对于2.0颠覆性特性,我们将在之后一一讲解。今天我们就来看它特性之一,默认级别。 使用log4j 1.x当中,我们都需要自己提供它配置文件。...如果不提供就会报错,2.0版本当中,配置文件已经不是必须了。至于我们没有提供它配置文件,它会默认打印error级别的信息。...Test0 { /** * 如果我们工程(项目)不提供log4j配置文件,则log4j会使用默认配置,级别为error * 4获取日志记录器方式 */ private static

    78720

    Log4j 2.0开发高级使用详解—介绍篇(一)

    Log4j 2 是 Log4j 升级版本,该版本比起其前任来说有着显著改进,包含很多在 Logback 改进以及Logback 架构存在问题。...这是 Log4j 2 首次发行版本,值得关注改进包括: API 分离 – Log4j API 和其实现进行分类(注:我讨厌这样,本来一个jar包搞定,要变成好几个,跟 slf4j 似的)...为日志审计而设计,与 Log4j 1.x 和 Logback 不同是 Log4j 2 将不会在重新配置期间丢失事件,支持消息可方便进行审计 性能方面的提升,关键领域比 Log4j 1.x 性能提升不少...Apache Log4j 2是分布式Apache许可,2.0版本。同时提供有二进制版和源码版。 Log4j 2.0有默认配置文件,级别为ERROR。有手动配置,也有自动配置。...3.以编程方式,通过调用api暴露在配置界面添加 组件默认配置。 4.以编程方式,通过调用Logger类内部方法。 关于Log4j 2.0特性说明,目前了解到就这些。

    48310

    vuev-for,key为什么不能用index?4

    写在前面在前端,主要涉及基本上就是 DOM相关操作 和 JS,我们都知道 DOM 操作是比较耗时,那么我们写前端相关代码时候,如何减少不必要 DOM 操作便成了前端优化重要内容。...虚拟DOM(virtual DOM) jQuery 时代,基本上所有的 DOM 相关操作都是由我们自己编写(当然博主是没有写过 jQuery 滴,可能因为博主太年轻了吧,错过了 jQuery 大法时代...DOM 更新操作Vue 源码 diff 算法patch.js 路径Vue diff 算法相关代码主要在 patch.js 文件,路径如下图图片patch 函数图片1、如果新节点不存在(vnode...,如果定义属性非常多的话,触发更新将会导致非常大性能损耗,因此,使用 v-for 时候,建议使用类似 id 这种唯一标识字段替代 index,避免不必要性能损耗!...,体会到了前端对于性能极致追求,通过通读 vdom 源码,基本能够从更加深刻角度去理解采用 VDOM 目的,以及 key 值 diff 算法真正作用,也能够从更加底层角度理解为什么不推荐使用

    1K50

    C++使用QtSLOT须要注意一个小细节

    大家都知道C++虚函数机制,对于基类定义为虚函数地方,子类假设覆写,基类指针或者引用来指向子类时候会实现动态绑定。...但在使用QtSLOT时候,会出现一个问题须要注意,就是connect时候,你给当前子类对象child设置了SLOT,但这个基类实现过,举个样例 Class Base : public...public Base { Q_OBJECT public: Child(); privare slots: void say(){ qDebug() << "Child" }; }; Base...myConnect,this指针表示你在当前Base类,这个时候非常自然去调用Base::say(),一開始可能这样写为了自己主动连接和断除比較方便,可是假设你写了继承子类,你非常自然去覆写了...say这个函数,而且认为既然不是虚函数,没什么须要操心,你可能会去用Child去连接别的对象,心理还在想着Basesay实现方法(由于我记得我当初链接信号时候写是Base,而且我如今没实用指针和引用

    1K20

    为什么物联网创造良好用户体验如此困难?

    07.17-Product-Manager-1068x656_副本.jpg 物联网领域创造良好用户体验是困难。现在有更多技术层,更多用户需要取悦,更多团队需要协调。...随着物联网技术不断发展,并渗透到所有行业,物联网产品团队面临最大挑战之一是如何在整个物联网技术堆栈中提供一致用户体验。 那么,为什么创造物联网体验比创造传统云或移动体验更复杂呢?...Framework-UX_副本.png 为什么物联网创造一致用户体验很困难 大多数进入物联网领域产品经理通常都有管理硬件或软件产品经验。...让我们看几个真实世界例子来展示交付一个内聚物联网体验复杂性: 示例A:消费物联网产品用户体验挑战 想象一个智能恒温器。...在这个商用太阳能电池板产品,您不仅有多个软件和硬件接口,还需要取悦四个用户:技术人员、设备经理、开发人员和系统集成商。 那么,如何确保整个产品体验一致性呢?

    55100

    nextline函数_JAVAScannernext()和nextLine()为什么不能一起使用?

    Java 输入一直是一个坑,本来一直用 Scanner,但一直搞不懂换行符,就用 BufferReader ,但前不久大疆笔试需要持续输入,早忘了 Scanner 怎么写,而那个场景用 Scanner...对于 “” 情况分析: 输入 2 时候调用是 nextInt返回:nextInt 返回是结束符之前内容,并不会返回结束符 我们输入:2 \r 以回车 ( \r ) 结尾,于是 2 被返回,...回车符 “\r” 它被丢弃缓冲区,现在缓冲区,只有一个 \r ,于是 下一次 nextLine 扫描时候就又扫描到了 \r,返回它之前内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...,而我们控制台中输入数据也都是被先存入缓冲区中等待扫描器扫描读取。...这个扫描器扫描过程判断停止依据就是“结束符”,空格,回车,tab 都算做是结束符 而坑点在于 next 系列,也就是下面这些函数:next nextInt nextDouble nextFloat

    2.7K10
    领券