这条线如何运作:
nnoremap <leader>ws mz:%s/\s\+$//<cr>:let @/=''<cr>
我知道它对<leader>ws
没有递归映射,我知道它使用宏并进行搜索和替换,但我不能完全遵循它。请帮助我绕过这个!我不想在我的vimrc中添加我无法理解的内容
我也知道它设置了一个标记z然后开始全局搜索和替换。但似乎没有使用那个标记......
我得出的结论是,这个标记已被遗忘,并且它应该被附加到末尾以返回到调用ww的行。我现在补充说。但仍然不遵循其余的。
答案 0 :(得分:2)
让我们把它分解成不同的部分。
nnoremap <leader>ws
为密钥序列<leader>ws
创建非递归正常模式映射。
mz
设置标记z(它似乎对此没有任何作用)。
:%s/\s\+$//<cr>
对1个或多个(%s
)空格字符(\+
)进行全局搜索并替换(\s
),然后是行尾($
) ,并将其替换为空(//
)。这剥夺了尾随空格。
:let @/=''<cr>
将寄存器/
设置为空字符串。由于/
是最后一个搜索寄存器,它会清除最后一次搜索(由替换设置。
所以整个命令创建一个映射,设置一个寄存器,删除尾随空格,然后清除最后一个搜索寄存器中的替换。