ReSharper 有一个很好的功能,称为“扩展选择”:通过按CTRL+W
(我认为这是默认设置)反复地,您从当前插入符号位置中选择越来越多的内容。首先它是一个单词,然后是越来越多的单词、一行、内部然后外部的行块(例如 if 块),然后是一个函数,等等......
基本上,通过重复按组合键,您最终可以选择整个文件。我相信至少你们中的一些人会熟悉它。
我刚刚开始学习 vim 的所有复杂之处,并且没有足够的经验来了解如何在 Vim 中实现这样的东西(尽管我认为这是可能的)。所以我的问题是针对 Vim 专家的:这可以做到吗?如何做到?
Update:一些背景故事。我一直在和我的前老板谈论 Vim 的所有好处,他认为这都很棒。他唯一的问题是:它有“扩展选择”吗?到目前为止我的问题是no。所以,如果有人知道答案,我最终会赢得一场讨论:P(也许还会创建一个新的 Vim 转换:-)
)
我快速解决了这个问题。它不能按原样工作。如果您对其进行了改进,请随意进行编辑并发布在 vim wiki 上或作为插件。
您可能想为每种语言制作一个:resharp 列表(例如,用于括号语言的列表等)
所需要的只是原始光标位置的标记:标记和重置索引的超时自动命令。
"resharp emulator
"TODO this needs a marker
"also c-w is bad mapping as it has a lag with all the other-
"window mappings
"
let g:resharp_index = 0
let g:resharp_select = ['iw', 'is', 'ip', 'ggVG']
func! ResharpSelect()
if g:resharp_index >= len (g:resharp_select)
let g:resharp_index = 0
endif
exe "norm \<esc>v" . g:resharp_select[g:resharp_index]
let g:resharp_index = g:resharp_index + 1
endfun
nnoremap <c-w> :call ResharpSelect()<cr>
vnoremap <c-w> :call ResharpSelect()<cr>
"Something to reset on timeout. TODO this doesn't work
au CursorHold :let g:resharp_index = 0<cr>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)