vim键映射,执行正常不起作用

时间:2017-02-11 13:19:53

标签: vim

我想突出显示vim中一行末尾的尾随空格。以下命令有效:

:match Error /\v\s+\n/

但是我无法将其映射到密钥:

nnoremap <leader>w :execute "normal! :match Error " . '/\v\s+\n/' . "\<cr>"

Vim回应:

E114: Missing quote: "\
E15: Invalid expression: "normal! :match Error " . '/\v\s+\n/' . "\

更新: 刚刚看到这个:http://vim.wikia.com/wiki/Highlight_unwanted_spaces我已经完成了映射工作,只写了:

nnoremap <leader>w :match Error /\v\s+\n/<cr>

任何人都可以解释原始execute normal! ...构造的问题是什么阻止它工作吗?

1 个答案:

答案 0 :(得分:0)

您的映射

我认为应该是

<强> nnoremap <leader>w :execute "normal! :match Error " . '/\v\s+\n/' . "\<lt>cr>"<cr>

:help <lt> 我并不是很清楚为什么需要这样做(曾几何时,我的执行也不起作用,因为我有\<esc>\<cr>中的execute "normal! .."。只需知道该地点或<cr>,您需要在此结构中使用\<lt>cr> <cr>

最后还需要<cr>来实际运行:execute ".."<cr>命令。

更容易解决方案

另外,我认为将

放得更容易

<强> set listchars=trail:· set list

在你的vimrc中

,然后你就可以看到尾随的空格。

就个人而言,我的vimrc中有 set listchars=trail:·,tab:»\ ,extends:»

并且一个简单的正则表达式搜索(/\s\+$)显示了空格,您可以使用 d $ 轻松删除(&#34;删除&#39;直到结束&#34; )。然后,一旦你这样做,你可以按 n &#34;转到下一个&#34; 然后&#34 ;重复&#34; d$

很酷的提示

一旦你突出你的搜索模式,你甚至可以 d g n 到&#34;选择下一个出现并删除它&#34 ;一次性 - 然后你可以反复按直到没有任何反应...... :help gn。另外,乱用 c g n ;它非常整洁。

干杯。