这个vimrc行究竟做了什么

时间:2015-04-06 23:56:13

标签: search macros vim

这条线如何运作:

nnoremap <leader>ws mz:%s/\s\+$//<cr>:let @/=''<cr>

我知道它对<leader>ws没有递归映射,我知道它使用宏并进行搜索和替换,但我不能完全遵循它。请帮助我绕过这个!我不想在我的vimrc中添加我无法理解的内容

我也知道它设置了一个标记z然后开始全局搜索和替换。但似乎没有使用那个标记......

我得出的结论是,这个标记已被遗忘,并且它应该被附加到末尾以返回到调用ww的行。我现在补充说。但仍然不遵循其余的。

1 个答案:

答案 0 :(得分:2)

让我们把它分解成不同的部分。

  

nnoremap <leader>ws

为密钥序列<leader>ws创建非递归正常模式映射。

  

mz

设置标记z(它似乎对此没有任何作用)。

  

:%s/\s\+$//<cr>

对1个或多个(%s)空格字符(\+)进行全局搜索并替换(\s),然后是行尾($) ,并将其替换为空(//)。这剥夺了尾随空格。

  

:let @/=''<cr>

将寄存器/设置为空字符串。由于/是最后一个搜索寄存器,它会清除最后一次搜索(由替换设置。

所以整个命令创建一个映射,设置一个寄存器,删除尾随空格,然后清除最后一个搜索寄存器中的替换。