你如何在vi中使用标记?

veh*_*zzz 5 c c++ vim

我刚刚在vi中发现了标记的存在.你如何使用它,你对它们了解多少?它们对C++开发人员有用吗?

Rob*_*lls 11

我一直用它们:

  • 注释掉代码块,
  • 复制和移动代码块,
  • 将代码块删除并删除到命名缓冲区中
  • 编辑:在一个测试块中替换.

评论:

  • 转到要注释掉的代码的第一行,
  • 标记它,例如输入 ma
  • 走到街区的尽头
  • 输入:'a,.s/^/#(或您需要的任何评论字符)

复制和移动:

  • 标记第一行如上,
  • 转到要复制/移动的块的底部
  • 输入你的第二个不同的标记,例如 mb
  • 转到要复制块的位置,然后输入:'a,'bco .:'a,'bmo .复制或移动resp.

Yanking到命名缓冲区:

  • 标记第一行如上,
  • 到你想要猛拉的块的底部
  • enter :'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 的字符之前的char.

顺便说一句,在Vim中,输入:reg将为您提供所有寄存器的内容.你的删除寄存器.