我刚刚在vi中发现了标记的存在。你如何使用它,你对它们了解多少?它们对C ++开发人员有用吗?
答案 0 :(得分:11)
我一直用它们:
评论:
ma
:'a,.s/^/#
(或您需要的任何评论字符)复制和移动:
mb
:'a,'bco .
或:'a,'bmo .
复制或移动广告。Yanking到命名缓冲区:
:'a,.ya a
会将块拉入缓冲区a或:'a,.ya A
将块附加到缓冲区a的当前内容编辑:替换为一段文字:
:'a,.s/search_string/replace_string/[gc]
,它将在您的文本块中删除。在最后一个斜杠后添加'g'或'c'将调用通常的全局和确认功能。 编辑:忘记说,请记住'a
(撇号a)是指包含标记的行,而`a
(反引号a)是指上的字符你标记的那一行。
所以`ad`b
(bactic-ad-backtic-b)是一个有用的小片段,用于删除标记为“a”的字符到之前的字符的行中的文本标有b的字符。
顺便说一句,在Vim中,输入:reg
将为您提供所有寄存器的内容。你的删除寄存器。
答案 1 :(得分:3)
当我需要在大文件中跳转时,我会使用它们。例如,如果我正在处理两个相互关联的函数,一个在文件顶部附近定义,另一个在底部附近定义,我可以设置标记以在两个位置之间快速来回跳转。
如果我宣布上课或使用我不熟悉的声明,那么标记首先解释事物的位置通常会有所帮助,以便我可以跳回去快速参考。
标记在一般情况下很有用,但我认为它们不再是(或更少)有用,只是因为你在C ++中开发。
这些只是一些想法 - 我相信会有很多其他好的想法。
答案 2 :(得分:2)
最常见的用途是复制粘贴或删除大块。
移至块的第一行,键入mx
移动到块的最后一行,键入y'x
以复制整个块(到剪贴板),或d'x
删除(剪切)它。在任何一种情况下,都可以使用p
或P
将其粘贴到其他位置。
答案 3 :(得分:1)
标记可以作为回到行的开头或行中的确切位置的好方法。
当我想提取或复制一部分代码时,我通常会使用它们。请考虑以下事项:
int tmp = 0;
while (tmp < 10)
{
doIt(tmp); /* cursor before d */
/* ... */
finishIt(tmp);
tmp++
}
如果我想从doIt(tmp)
提取到finishIt(tmp)
,我会在光标处设置一个标记(例如ma
),导航到finishIt,然后删除标记a与d'a
。