繁体   English   中英

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

[英]vim key mapping with execute normal not working

我想突出显示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! ...的问题是什么execute normal! ... execute normal! ...构造阻止它工作?


你的映射

我认为应该是

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

:help <lt>我并不是很清楚为什么需要这个(曾几何时,我的执行也没有工作,因为我在execute "normal! .."\\<esc>\\<cr> execute "normal! .." s。只要知道到位或<cr> ,你需要在这个结构中使用\\<lt>cr>来获取<cr>

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


更容易解决

另外,我认为放入更容易

set listchars=trail:· set list

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


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

一个简单的正则表达式搜索( /\\s\\+$ )显示空白区域,您可以使用d $轻松删除( “删除'直到结束” )。 然后,一旦你这样做,你可以按n “转到下一步”然后“重复” d$


很酷的提示

一旦你突出你的搜索模式,你甚至可以d 以一气呵成“选择下一个出现并删除它” -那么你可以反复按 直到什么都没发生...... :help gn 另外,乱用c g n ; 这是非常整洁的东西。


干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM