Questions tagged «repeated-commands»

有关重播同一命令的问题。这包括点命令(。),@宏,@:和类似方法。

2
如何查看和编辑录音(即录制的宏)?
我使用复杂的重复记录我的操作(qq记录,一些操作,q停止),但我犯了一个错误。 可以查看我所记录的内容并更正错误,而不必再次执行此操作? 通过@q工作调用记录的字符,但是在映射(:map q- No mapping found)中看不到它。 通过键入以下命令,帮助中没有太多信息:help recording。

4
我可以重复上一个UI命令吗?
我知道我可以.用来重复上一个编辑命令。 有没有办法重复上一个UI操作命令?例如,我可以写成10<C-W>-将窗口缩小十行。如果我想进一步缩小命令范围,可以按⟨ 一些键 easily轻松地重复此命令,将是很好的选择。

3
如何在不进入插入模式的情况下替换多个字符
我有一个带有以下内容的行的文件: foofoo.xy.barbar 我想将更xy改为gh。我尝试做2r-> gh,但是显然不起作用,因为它替换为xy,gg然后将光标向左移动一个位置。 有没有一种方法可以在不进入插入模式或不使用更多击键的情况下进行此操作(例如:s/xy/gh/)?


3
如何在vim中插入细微差别的重复文本?
我想插入这样的文本: similar text wordA similar text ... similar text wordB similar text ... similar text wordC similar text ... 我知道我可以多次粘贴文本,然后使用替换为每行更改单个单词,但是我仍然发现此方法非常不便。 有没有一种方法可以将单词或单词列表保存到“变量”中,然后使用此变量生成相似的文本? 编辑我在原始问题中做了一些不清楚的事情,实际上,我正在尝试进行一些非常相似的函数定义,因此wordA wordB...在每个文本克隆中可能会出现很多次,并且文本可能包含很多行。模式完全是这样的: similar_text1 wordA similar_text2 wordA similar_text3 ... similar_text1 wordB similar_text2 wordB similar_text3 ... similar_text1 wordC similar_text2 wordC similar_text3 ... (文本可能包含换行,并且wordA,wordB ...可能存在多次) 第二次编辑 每次我做这样的工作时,“ similar_text”部分可能会有所不同,因此该工作的解决方案最好是可重用的。因为我试图做出非常相似的函数定义,或者将字符串映射到函数映射表。 阅读答案和实践后,我发现将这项工作视为某种替代更为方便,因为可能包含换行符的单独“ part1”,“ part2” ...“ …

6
删除n行跳过1行脚本
我想创建一个基本的Vim脚本,该脚本仅删除n行,跳过1行并重复直到文档末尾。我不在乎特定的匹配项,我只想删除该行。例如; 因此,我想对3ddj整个文档重复该命令。 Text I want to keep. Text I want to delete. Text I want to delete. Text I want to delete. Text I want to keep. Text I want to delete. Text I want to delete. Text I want to delete. Text I want to keep. Text I want …

4
将命令序列捆绑在一起以重复(。)
考虑: apple pear 将光标放在第一行上,键入Yp,生成: apple apple pear 将光标放在pear行上,然后键入.以重复上一个命令。这仅重复p(而不是组合Yp),产生: apple apple pear apple 我想知道一种方法来.重复最后N条命令。喜欢的东西2.重复组合Yp,以产生: apple apple pear pear Ofc无效-重复p两次。但是这个想法是“重复最后两个命令的顺序 ”。 我知道我可以- q记录命令序列并使用来重复它们@@,但是这种解决方案并不理想,因为它需要您一直在进行规划,而实际上,您通常并不知道需要重复一些操作直到之后你已经做到了。 有什么方法可以实现我想要的吗? 安慰奖:如果以上都不可行,是否有办法重复上一次的宏播放?例如,如果我键入@@要播放的最后一个宏,我希望随后的内容.等同于@@再次键入-而不是再次键入(例如,如果的结果@@取决于您所在的行)

6
如何将每行的前四个字符复制到同一行的末尾?
给定一系列类似于以下内容的行: 2001 "Some Kind of Title," Author's Name, Publication Name, 1 Mar. 2002 "Some Kind of Title," Author's Name, Publication Name, 12 Oct. 2003 "Some Kind of Title," Author's Name, Publication Name, 8 Apr. 2004 "Some Kind of Title," Author's Name, Publication Name, 3 Jun. 有没有办法我可以抓住前四个字符(年份),然后将它们复制到行的末尾,使其看起来像这样: 2001 "Some Kind of …

2
将最后一个动作(。)保存在宏中
用例 我处于正常模式。我没有明确考虑录制宏,但是我只做了一个命令更改。现在,我可以使用点重复此操作。 我现在意识到,将其保存在宏中以便以后使用,而不是每次都键入整个命令是一个有用的动作。我现在可以通过使用点来进行所有需要此命令的更改,或者可以继续编辑并稍后通过将其保存在宏中来使用此命令。 后者是我要执行的操作,但是想到的最简单的方法并不容易-撤消更改,开始记录宏并重新键入命令以进行所需的更改,然后停止记录宏。 到目前为止,我尝试过的是: 在宏中记录点不起作用,因为它记录点而不是点执行的更改。(例如,假设存储在dot中的命令是:d5w如果您开始记录宏并通过进行操作,希望每次运行该宏都会删除5个字,那么这种情况就不会发生。下次运行宏将执行点运算而不是命令执行d5w,这意味着,如果您在录制宏后进行了其他更改-说使用3个字进行删除d3w,这是您执行的最后一次更改,那么当您运行宏时,它将删除3个字单词而不是5,因为它只是在运行.)

1
如何防止(或至少提示确认)非常大的数字被用作前缀命令?
它的发生频率不像您想象的那么频繁,但偶尔会发生,而且我什至没有养猫。 基本上,如果您混搭数字行或数字键盘,然后碰巧触发了可重复命令的键盘,则可能会无意间命令Vim执行数千,百万甚至十亿次的任务。这很容易失控,并可能导致数据丢失。 所以我想知道我们是否可以更改源代码中的配置或内容以进行健全性检查以防止此类DoS。

1
按地址删除多行
我当时正在看这个vimgolf挑战,我认为按地址删除特定行会很好。我知道我可以:<line_number>d用来做,但是有没有办法列出d要运行的多个行号?我想象这样的事情::1,4,32d,但是它当然不起作用。 怎么做?

1
通过:g / ^ / norm和:%norm了解行参考差异
假设我有以下非常简单的文件 a b c d e 并且我决定要在每行之后添加空行。我立即想到了几种不同的方法。我们可能会这样做(从而接受失败)。我们可能会录制一个类似的宏,qqo<ESC>jq并重复几次。 在我看来,另外两种方法似乎更明显。 首先,我想我会在每行上发出:norm命令o。所以我跑了:%norm o。但是实际发生的是,我们得到5条空行,然后是上面未分隔的行。我的解释是%norm,vim实际上在这五行文件的前五行中接收了以下普通命令发出的消息。该o命令创建新行,并且vim是“哑”的,因为它是通过行号而不是实际上通过其他标识符来引用的。 好吧,我很尴尬。当然。我尝试了其他一些方法,看看是否可以使上述方法起作用,但是,我不能。出于好奇,我尝试了另一种我最喜欢的大规模应用方法。这导致我尝试:g/^/norm o。令我惊讶的是,这很好!因此,在我看来,这里的vim似乎并不像上面那样“愚蠢”,并且引用行的不仅仅是行号。 到底是怎么回事?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.