Vim可视化模式下如何实现选中光标到最近{/}的快捷键映射?
解决Vim可视化模式下选中到最近{}的快捷键问题
你的问题出在:可视化模式下执行:call search(...)这类命令会直接退出可视化状态,导致仅跳转而不选中文本。要实现可视化模式下选中从光标到最近{/}的文本,需要针对不同模式分别配置映射:
正确的快捷键映射
-- 正常模式:跳转至最近的{/}并居中 vim.keymap.set('n', '<S-Up>', ":call search('{', 'b')<CR>zz", { noremap = true, silent = true }) vim.keymap.set('n', '<S-Down>', ":call search('}')<CR>zz", { noremap = true, silent = true }) -- 可视化模式:选中从光标到最近{/}的文本并居中 vim.keymap.set('v', '<S-Up>', "?{<CR>zz", { noremap = true, silent = true }) vim.keymap.set('v', '<S-Down>', "/}<CR>zz", { noremap = true, silent = true })
原理说明
- 正常模式下,
search()函数可以精准定位目标字符,配合zz实现居中显示,和你原来的逻辑一致。 - 可视化模式下,直接使用
?{(向上搜索最近的{)和/}(向下搜索最近的}),这类命令会在保持可视化状态的同时,自动选中从当前光标到目标字符的范围,再通过zz居中。
内容的提问来源于stack exchange,提问作者mr_scrpt
相关产品推荐
相关产品推荐

