[英]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.