我正在编辑一个文本文件中的字典,其中包含俄语单词--每行一个单词。
有些名词缺少它们的派生词,它们通常是由几个字母附加的同一个词--在6-7个变体中,如下面的截图所示:

在Vim中,我希望将光标放在第一列中,并逐行向下滚动。当我认出一个名词时,我想按一些(尽可能少!)敲击键取这个单词,把它复制成单独的行,并附加字母。
我可以通过稍后发布%sort u来处理副本。
如果我能在整个文件上运行这个命令,它将是这样的:
%s/\(.\+\)$/\1^M\1а^M\1ам^M\1ами^M\1ах^M\1е^M\1ном^M/请问您有什么想法,如何在Vim中创建这样一个“宏”?
发布于 2013-03-21 20:11:10
您可以通过在q模式下按escape记录宏。例如,
qa开始记录宏并将其存储在寄存器a中(其他字母表和数字也可用于寄存器)。escape模式下再次按q。您的宏现在在寄存器a中创建。每当您想重复您的密钥序列时,只需按@a键即可。
请注意,您可以在recording模式下执行任何操作,包括任何类型的命令、插入、光标移动等等。有关宏和相关选项的更多信息,请查看Vim帮助:h complex-repeat。
Vim寄存器作为宏和跳转测试的位置持有者共享;此功能允许您在文件中保存和编辑宏。详情请参见this question。
发布于 2013-03-21 20:36:20
下面是一个映射解决方案,它将行复制到缓冲区中,然后使用p粘贴。
map <F2> 0dwpo<esc>pAa<enter><esc>pAam<enter><esc>pAax ...etc发布于 2013-03-21 20:54:37
如果你的目标是,当你的光标在一个特殊的单词上,并按下什么,vim将附加不同的“后缀”(我希望我使用正确的词,但你知道我的意思)。你可以去宏(q)。但是,由于您已经编写了:s命令,您可以使用该命令创建一个映射,并且它会更短。
在命令行中,您可以通过按<c-r><c-w>获得光标下的单词。所以你可以试着:
nnoremap <leader>z :s/<c-r><c-w>/& & &..../<cr>我没有编写& & &...部分,因为我不知道(从未尝试过,我没有在windows下使用vim )。我甚至没有窗口),如果行中断\n可以在这里使用的窗口下。&是指整个匹配的部分,在本例中是光标下的单词。
因此,您只需将光标移动到单词,输入<leader>z,vim就可以为您完成这项工作。(如果替换部分是正确的:)。
https://stackoverflow.com/questions/15556932
复制相似问题