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

vim中代码块和宏的最佳策略是什么?

在Vim中,代码块和宏是两个不同的概念,但它们都可以用于实现自动化的文本编辑。

代码块是指一段可以重复使用的代码,可以通过复制和粘贴来重复插入到文本中。在Vim中,可以使用以下命令来操作代码块:

  • yy:复制当前行到寄存器中。
  • nyy:复制当前行及其下面的n-1行到寄存器中。
  • p:将寄存器中的内容粘贴到当前位置下面。
  • P:将寄存器中的内容粘贴到当前位置上面。

宏是指一系列的编辑命令,可以在文本中重复执行。在Vim中,可以使用以下命令来操作宏:

  • q{register}:开始录制宏,{register}是寄存器的名称,可以是a-z中的任意一个。
  • q:停止录制宏。
  • @{register}:执行宏,{register}是寄存器的名称,可以是a-z中的任意一个。

使用宏可以实现更复杂的自动化操作,例如在多行中插入相同的文本或者对多行进行相同的修改。

在Vim中,最佳的策略是根据具体的需求来选择使用代码块还是宏。如果需要重复插入相同的代码块,则使用代码块比较方便;如果需要对多行进行相同的操作,则使用宏比较方便。

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

相关·内容

python继承代码

---- 本节知识视频教程 一、类代码 在定义类时候,使用了冒号: 而这个冒号在python表示一个代码开始。 代码读取默认是从上到下,类代码代码同样是从上到下读取。...类代码使用注意点: 1.实例化一个类后,如果在方法外写代码会被直接运行。 2.类变量名称,自动会被认为类属性,这个属性可以被该类方法调用。...继承代码定义方式: Class 父类名称: 父类成员 Class 子类名称(父类名称):#这里体现了继承定义 子类成员 注意:子类继承父类后,我们可以直接实例化子类,那么父类属性方法都可以被子类调用...三、总结强调 1.类代码,可以通过类实例化就可以输出类中代码效果,主要理解代码读取顺序。 2.类继承。掌握类继承定义以及类调用方法,继承了哪些。...相关文章: python属性方法私有化 python字典赋值技巧,update批量更新、比较setdefault方法与等于赋值 python函数概述,函数是什么,有什么用 python字典删除

1.7K20

如何在Word添加漂亮代码 | 很全方法整理比较

网上已有的方法 二、推荐方法 一、网上已有的方法 网上已有的方法总结下来主要有以下几种: planetB | Syntax Highlight Code In Word Documents 因为是国外网站...Pycharm/VSCode等集成开发环境里代码直接复制贴到 Word 里,会保持代码高亮效果。或者使用 Typora/Notepad++ 等软件转化样式再贴到Word。...网站 word.wd1x 可以很方便地为代码着色,就是生成效果一般,如下所示: 还有个 Python Pygments,操作演示如下: Try out Pygments!...二、推荐方法 利用现有的 MarkDown 排版工具代码高亮,然后再贴到Word,比如:Md2All、MarkDownNice。...演示如下: Md2All 代码主题(都挺好看,白底适合贴到Word):atelier-cave-light、atelier-dune-light、github-gist、googlecode、school-book

6K10

Linux内核代码maxmin实现以及语句表达是({})应用

Linux内核代码中有很多比较精巧程序设计技巧,include/linux/kernel.h实现maxmin就是其中一部分。...我们先来看一下普通maxmin一般怎么写: #define min(x,y) ((x)>(y)?(y):(x)) #define max(x,y) ((x)>(y)?...(x++) : (y++)) 很明显,这么做是不安全,那我们来看Linux Kernel是如何做: #define max(x, y) ({ \ typeof(..._max1 : _max2; }) 这么做主要涉及以下几个知识点: 1、typeof(x) 找出x数据类型 2、语句表达是({S1;S2;......;Sn;}) 总语句表达是的值是Sn,这个技巧我之前写代码是也用到过,呵呵 3、(void) (&_x == &_y);巧妙 这个主要是用来判断x,y数据类型是否一样,利用了编译器一个小特性:不同数据类型变量进行比较时会产生

1.4K50

C++最佳实践 | 2. 代码风格

本系列是开源书C++ Best Practises[1]中文版,全书从工具、代码风格、安全性、可维护性、可移植性、多线程、性能、正确性等角度全面介绍了现代C++项目的最佳实践。...本文是该系列第二篇。 C++最佳实践: 1. 工具 2. 代码风格(本文) 3. 安全性 4. 可维护性 5. 可移植性及多线程 6. 性能 7....注释 注释应该使用//,而不是/* */,使用//可以更容易在调试时注释掉代码。...代码必须包含{} 省略{}可能会导致代码语义错误。...上述代码在debug模式下构建时可以成功运行,但在进行release构建时会被编译器删除,从而造成debugrelease构建行为不一致,原因在于assert()是一个,它在release模式下展开为空

1.1K10

VIM 操作记录

整块缩进 同上,选中列首, C_> 或者 C_< 进行缩进(选中后输入数字可以设定缩进个数) V/v 操作— 整行选择 键盘v, 选中操作区域。...= : 代码自动缩进(多层次) J : 选中区域连接为一行 录制 st=>start: qa : q开始记录,a是保存寄存器 end=>end: end op=>operation: 一系列操作...i 关闭i 页,没指定关闭当前 :bufdo tab split 把buffer文件全部转为tab vim启动直接以页形式打开文件 vim -p xx.c aa.c ?..../ 命令递归查找当前目录下 *.c *.h 文件包含XXX。查找后,通过命令 :cw 查看。...python,结果黏贴在文本,替换了源代码 ---- 参考 酷壳--简明 Vim 练级攻略 无插件Vim编程技巧 大家来学vim

1.9K20

IDEA + Vim,竟可以这么牛逼!!

真正Vim\%V标志在IdeaVim不生效。 11代码折叠 zo -打开折叠 zc -关闭折叠 14定义 在IdeaVim定义比Idea自带功能要轻量许多。...因此最好把用来保存寄存器用来复制粘贴寄存器分开,不要同一个寄存器有时用来记录,有时用来复制粘贴。...右手区hjklnm键用来保存一些临时。yuiop五个寄存器保留用来复制粘贴。如果录制不涉及删除大段代码,寄存器1至9也可以用来进行复制粘贴。 执行一次后,可以用@@命令重复上一次执行。...在Idea录制时,如果触发了代码自动完成,在自动完成列表启动状态输入字符不会被记录。...在录制过程避免触发代码自动完成功能。

2.5K10

说实话,Intellij IDEA 自带 Vim 插件真心不错。。。

在 IDEA Intellij小技巧插件 一文简单介绍了一下IdeaVim插件。在这里详细总结一下这个插件在日常编程一些常用小技巧。 供有兴趣使用这个插件,但对Vim还不十分熟悉朋友参考。...过程可按o键令光标在选区两端切换。 在选择模式中选中多行,然后按I或A后输入文本,再退出插入模式,所输入文本将自动加入到每一行开头或结尾。 7....真正Vim %V 标志在IdeaVim不生效。 11 代码折叠 zo - 打开折叠 zc - 关闭折叠 14 定义 在IdeaVim定义比Idea自带功能要轻量许多。...在Idea录制时,如果触发了代码自动完成,在自动完成列表启动状态输入字符不会被记录。...在录制过程避免触发代码自动完成功能。

12.3K42

用了VS Code、IDEA等十几款编辑器后,我总结出优秀编辑器特质

VS Code:我主要用于 Rust、TOML Markdown 。 emacs:我很喜欢在 Haskell Rust 代码库(以及 YAML/Markdown/TOML)上使用它。...简言之,我认为用鼠标在编辑器光标周围移动太麻烦了,尤其是我们大多数时间都在写代码(即敲键盘),因此,用鼠标移动意味着要多次在键盘鼠标之间切换。...寄存器:我可以指定单个按键将内容粘贴到不同寄存器(如剪贴板)。...其他许多事情都适合用 Web 技术,但在很多层面上,在编辑器运行复杂 JavaScript VM/CSS 引擎并不是什么好事情(性能是第一个麻烦)。...它能为你做很多事情,其中一些真的给我留下深刻印象: 允许我在函数内选择代码重构机制,要求编辑器“将其移至专用函数”。

1.7K10

ZippyPoint: 一种基于学习特征点提取+二进制描述子,速度提升5倍+,为移动平台提供一种ORB替代方案

然后,穿越到下一个绿色macro-block,并重复这个过程 为缩小搜索空间,本文提出了一种网络层划分遍历策略算法,如图2所示。...首先,本文将目标网络(即KP2D)操作划分为(macro-block)。对于每个,定义一个候选量化配置集合。然后遍历,为每个确定最佳配置。...由此可见,这种策略将搜索复杂性从组合级(每个配置数量乘积)降低到线性级(每个配置数量总和)。...网络层划分遍历策略结果。最终模型用粗体字表示,且性能表现与基线相当,但运行速度快了5倍。...绿色箭头强调了下一阶段使用配置 注:上述比较CPU使用是AppleM1 ARM芯片;作者对原始KP2D算法进行了细微调整作为baseline,新基线适配基于搜索算法,将Leaky-ReLU

85620

FreeRTOS系列第8篇---FreeRTOS内存管理

标准函数库malloc()free()函数有些时候能够用于完成这个任务,但是: 在嵌入式系统,它们并不总是可以使用; 它们会占用更多宝贵代码空间; 它们没有线程保护; 它们不具有确定性(每次调用执行时间可能会不同...2.heap_2.c 方案1不同,这个方案使用一个最佳匹配算法,它允许释放之前分配内存。它不会把相邻空闲合成一个更大(换句话说,这会造成内存碎片)。...不具有确定性 可能明显增大RTOS内核代码大小「注」:使用heap_3时,FreeRTOSConfig.h文件configTOTAL_HEAP_SIZE定义没有作用。...4.heap_4.c 这个方案使用一个最佳匹配算法,但不像方案2那样。它会将相邻空闲内存合并成一个更大(包含一个合并算法)。...不具有确定性,但是它比标准库malloc函数具有高得多效率。 heap_4.c还特别适用于移植层代码,可以直接使用pvPortMalloc() vPortFree()函数来分配释放内存。

1K20

Easy Tech:什么是I帧、P帧B帧?

2.为了压缩每个,首先在当前帧前后帧搜索,找到与我们想要压缩相似的。 3.记录最佳匹配位置(位于哪一帧以及在该帧位置)。...然后,两个之间差异被压缩,并和位置信息一起被发送给解码器。 请看下方图片。如果要压缩帧2(已用红色方框标记),你认为最佳方法是什么?该怎么做?...2.编码器可以在同一帧内(帧内预测)相邻帧内(帧间预测)搜到匹配。 3.它比较每个帧间帧内预测结果,并选出最佳结果。这个过程被称为“模式选择”,我认为这是视频编码器最核心部分。...I帧每个只能在同一帧内匹配其他,这意味着,它只能利用帧内“空间冗余”来进行压缩。空间冗余是一个术语,用来指单个帧像素之间相似性。...P帧每个都可以被: 时域预测 空域预测 跳过(skipped)(是指让解码器复制前一帧内位于相同位置——0运动向量) 我制作了一张插图来说明其中重点。上图中显示了I帧P帧。

2.7K20

Mac之vim普通命令使用

Mac之vim普通命令使用 https://www.cnblogs.com/muchu/p/6492824.html 高级一些编辑器,都会包含功能,vim当然不能缺少了,在vim中使用是非常方便...P 粘贴粘贴板内容到当前行上面 ]p 有缩进粘贴,vim会自动调节代码缩进 "a 将内容放入/存入a寄存器,可以支持多粘贴板 附:比如常用一个寄存器就是系统寄存器,名称为...o 跳转光标到选中另一个端点 U 将选中内容转成大写 O 跳转光标到另一个端点 aw 选中一个字 ab 选中括号所有内容,包括括号本身 aB...选中{}括号所有内容 ib 选中括号内容,不含括号 iB 选中{}内容,不含{} 对标记进行动作 > 右移 < 左移 y 复制 d 删除...~ 切换内容大小写

6.2K30

Visual Studio安装viemu后,vim vax 快捷键大全

经常使用模式,所以亲自尝试一下它。 V:按行选择。这在你想拷贝或者移动很多行文本时候特别有用。 :按选择。非常强大,只在很少编辑器才有这样功能。...你可以选择一个矩形,并且在这个矩形里面的文本会被高亮。 在选择模式时候使用上面所述方向键命令(motion)。比如,vwww,会高亮光标前面的三个词。Vjj将会高亮当前行以及下面两行。...VIM允许你记录一个来完成你特殊需要。 qregister:记录到寄存器register,这里register是任意寄存器名字。比如qa,将会记录并且把存在寄存器a里面。...用VIM代码 VIM是一个绝好编辑器来写代码,因为它有一些特性是专门为程序员而设。这里是一些常用: ]p:p功能差不多,但是它会自动调整被粘贴文本缩进去适应当前代码位置。试一下!...用 “\>” 来解决这个问题:          :%s/\/4/g 如果你在编码,你可能只想替换注释 “four”,而保留代码

1.1K50

日拱一卒,麻省理工YYDS,一节课让我学会vim

Editors (Vim) 编写英文文本代码是完全不同行为,编程时候,你会花时间在文件当中切换,阅读代码,搜索一些内容,并且参考一些内容进行编辑。...Vim拓展 vim也有非常丰富拓展插件,一些过时建议不同,你并不需要为vim设置插件管理器(因为vim8.0)。相反,你可以使用内置包管理系统。.../ :vsp 分隔窗口 一个buffer可以出现在多个窗口中 q{character}开始录制一个到寄存器{character} q 停止录制 @{character} 执行刚刚录制 当出现错误时执行会停止...{number}@{character} 会将重复执行{number}次 可以递归执行 首先,清楚寄存器当中 q{character}q 记录,在递归调用@{character} (不会生效...在你~/.vimrc配置你CtrlP,使得你可以通过快捷键Ctrl-P打开 为了练习Vim,在你机器上重新做一下课程Demo(Python代码片段) 在接下来一个月使用vim作为你文本编辑器

47230

【Rust日报】2023-11-29 在Rust unsafe 代码调试UB

在Rust unsafe 代码调试UB 这篇文章讲述了在 Rust 调试UB代码时遇到问题。...调试技巧建议: 可能包含在调试不安全 Rust 代码一些最佳实践技巧,比如使用断言、规范化指针操作等。...避免未定义行为方法: 可能探讨了编写不安全代码时需要注意事项最佳实践,以避免可能导致未定义行为问题。...展开影响: 讨论了展开在 Rust 重要性以及展开可能导致编译时间增加。还可能提到了一些减少展开影响方法。...编译时间管理优化策略: 探讨了管理编译时间策略,例如使用缓存、分析编译时间瓶颈并对其进行优化,以及选择合适编译器版本等。

8310

linux下vim命令详解

高级一些编辑器,都会包含功能,vim当然不能缺少了,在vim中使用是非常方便: :qx 开始记录,并将结果存入寄存器x q 退出记录模式 @x 播放记录在x寄存器宏命令...这个在文本批处理是非常有用。 同时编辑多个文件 在vim众多插件,有一个叫minibuffer插件,就是下面所说标签页功能了,可以支持同时编辑多个文件。...P 粘贴粘贴板内容到当前行上面 ]p 有缩进粘贴,vim会自动调节代码缩进 “a 将内容放入/存入a寄存器,可以支持多粘贴板 附:比如常用一个寄存器就是系统寄存器,名称为...o 跳转光标到选中另一个端点 U 将选中内容转成大写 O 跳转光标到另一个端点 aw 选中一个字 ab 选中括号所有内容,包括括号本身 aB...选中{}括号所有内容 ib 选中括号内容,不含括号 iB 选中{}内容,不含{} 对标记进行动作 > 右移 < 左移 y 复制 d 删除

2.5K30

TPU新秘密武器!谷歌Jeff Dean团队推「AI造芯」,自主设计芯片仅需6小时

在每个训练迭代,RL 代理一次放置一个(动作、状态奖励分别由 ai、 si ri表示)。一旦所有的被放置,标准单元格被放置使用一个力定向方法。中间奖励为零。...每个矩形代表一个单独放置 在一项测试,研究人员将他们系统建议与手动基线——谷歌TPU物理设计团队创建上一代TPU芯片设计——进行比较。...后续实验,研究人员使用预训练策略生成放置位置质量,与从头训练策略网络生成放置位置质量进行比较。...从无到有的训练与不同时间量微调 训练数据集由 TPU Block 开源 Ariane RISC-V CPU 组成。在每一个实验,都对除目标所有预先训练策略。...然后在相同测试上微调预训练策略网络,并对比不同训练时间下成本。随着数据集增大,生成布置质量和在测试上收敛时间都会提高。

35810

Mac之vim普通命令使用「建议收藏」

高级一些编辑器,都会包括功能,vim当然不能缺少了,在vim中使用是很方便: :qx 開始记录。...这个在文本批处理是很实用。 同一时候编辑多个文件 在vim众多插件。有一个叫minibuffer插件。就是以下所说标签页功能了,能够支持同一时候编辑多个文件。...,vim会自己主动调节代码缩进 “a 将内容放入/存入a寄存器。...类似于UE列模式 o     跳转光标到选中还有一个端点 U     将选中内容转成大写 O     跳转光标到还有一个端点 aw     选中一个字 ab     选中括号里全部内容...复制 d     删除 ~     切换内容大写小写 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115270.html原文链接:https://javaforall.cn

2.1K31

vim 从嫌弃到依赖(16)——

终于到了我第二喜欢vim功能了(当然了,最喜欢是.命令)。我原本计划在介绍完.命令之后介绍,以便让各位小伙伴们能了解到vim对于重复操作进行强大优化。...这个内容完全是我们之前通过键盘输入到vim内容,只是返回到普通模式输入是 而这个保存是^[ 因为有自己键盘编码方式,这个方式我觉得不需要特别去查去记,自己就可以从寄存器查到。...这就要求我们在使用过程,尽量规范化光标移动,不要搞这种特例形式。就像写代码不要写死一样。...我们可以在执行 0f.r)w~j最后退出。读一下这段内容, ~之前没见过吧。之前介绍过,gU gu后面可以跟 motion表示将对应范围字符转化为大写小写。g~可以进行大小写反转。...接着修改一下这个。在对应位置加上 S 这个操作,最后使用 0d$ 从行首粘贴到行尾,注意这里尽量不要使用 dd,它会连带着换行符一进行粘贴,可能会破坏指令。

56630
领券