在Intellij Idea中,有一项功能。假设我在我的代码中使用了一个变量myCamelCase
。然后如果我输入mCC
并按Ctrl - 输入或某些这样的组合键,它将扩展为myCamelCase
。 Vim中有类似的东西吗?CamelCase在Intellij Idea等Vim中的扩展?
5
A
回答
8
好的,原谅我回答两次,但自从我第一次尝试错过了这一点,我会再去一次。这比我想象的要复杂得多,但可能并不像我所做的那样复杂(!)。
现在修改为建议所有匹配的变量名称。
首先,这里有一个函数生成从“myCamelCase”字符串“MCC”缩写:
function! Camel_Initials(camel)
let first_char = matchstr(a:camel,"^.")
let other_char = substitute(a:camel,"\\U","","g")
return first_char . other_char
endfunction
现在,这里是需要的缩写(“MCC”)的功能和扫描当前缓冲区(从当前行向后)为具有此缩写的“词”。返回A的所有比赛的名单:
function! Expand_Camel_Initials(abbrev)
let winview=winsaveview()
let candidate=a:abbrev
let matches=[]
try
let resline = line(".")
while resline >= 1
let sstr = '\<' . matchstr(a:abbrev,"^.") . '[a-zA-Z]*\>'
keepjumps let resline=search(sstr,"bW")
let candidate=expand("<cword>")
if candidate != a:abbrev && Camel_Initials(candidate) == a:abbrev
call add(matches, candidate)
endif
endwhile
finally
call winrestview(winview)
if len(matches) == 0
echo "No expansion found"
endif
return sort(candidate)
endtry
endfunction
接下来,这里有一个自定义完成功能光标下读取单词,并建议通过上述函数返回的比赛:
function! Camel_Complete(findstart, base)
if a:findstart
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '[A-Za-z_]'
let start -= 1
endwhile
return start
else
return Expand_Camel_Initials(a:base)
endif
endfunction
要使用此功能,您必须定义“completefunc”:
setlocal completefunc=Camel_Complete
要使用插入模式完成,类型CTRL-XCTRL-U,但我通常这个映射到CTRL-L:
inoremap <c-l> <c-x><c-u>
有了这个代码,在vimrc你会发现,打字,然后mCC
CTRL-L将进行预期替换。如果未找到匹配的扩展名,则缩写不变。
该代码不是防水的,但它适用于我测试的所有简单案例。希望能帮助到你。让我知道是否需要澄清。
0
在Vim中有一个插件叫做vim-abolish。使用地图crc
扩大到骆驼案件。
相关问题
- 1. Intellij IDEA类文件扩展
- 2. Intellij-idea - 扩展Groovy类时给错误
- 3. IntelliJ Idea Vim的行为是奇怪的
- 4. .vimrc for IntelliJ Idea的vim插件
- 5. 在IntelliJ IDEA的
- 6. 在IntelliJ IDEA的
- 7. 如何将新的Android Studio扩展安装到IntelliJ IDEA
- 8. 在Intellij IDEA中模仿Vim的ScrollBind行为
- 9. 如何扩展IntelliJ IDEA CE代码评估功能?
- 10. Intellij-IDEA:如果他们有错误,则扩展导入块
- 11. 在IntelliJ IDEA
- 12. 在IntelliJ Idea PhpStorm
- 13. 在Intellij Idea 10+
- 14. 从IntelliJ IDEA的
- 15. 为IntelliJ IDEA的
- 16. Intellij Idea Lombok。 @Data等不起作用
- 17. IntelliJ IDEA有“Ctrl”+“K”,“Ctrl”+“D”等效吗?
- 18. 在IntelliJ Idea中更改Xx
- 19. 在IntelliJ IDEA中使用JTable
- 20. IntelliJ Idea中的Scala模块SDK Idea
- 21. 为什么在使用GWT UiBinder时IntelliJ IDEA更喜欢不扩展Composite?
- 22. IntelliJ Firefox Web扩展开发
- 23. IntelliJ IDEA的:在从终端
- 24. 无法在IntelliJ IDEA的
- 25. 跳转到在IntelliJ IDEA的
- 26. IntelliJ IDEA v12中的警告
- 27. IntelliJ IDEA中的Tomcat配置
- 28. IntelliJ Idea中的Bean验证
- 29. IntelliJ Idea中的Vaadin插件
- 30. intellij idea中的项目组
令人惊叹!这就是我所能说的。尽管如此,我仍然贪婪地/懒惰地向你要求更多。如果有多个可能的扩展:例如myCamelCase myCamelCart,选择最后一个。相反,它可以像Vim中的Ctrl-P关键字完成一样吗?再次,惊人! – dharm0us
我很高兴它的工作!处理多个匹配应该只是让Expand_Camel_Initials()返回一系列解决方案,然后设置'completefunc'来让你在两者之间进行选择。我会尽力在本周晚些时候看看它。 –
好的,这并不像我想的那么痛苦......我编辑了我的答案,现在它应该可以按照你的意愿工作。如果您有任何问题,请告诉我(我没有机会正确测试)。 –