最近安装了Eclipse 2019-03版本,发现自动提示太奇怪,查了查发现相关资料不多,连查带试研究了下,好像是这个版本不自带Code Recommenders插件了,最好装一下,里面的字符片段匹配挺好用的。
打开Help菜单里的Marketplace搜索Code Recommenders安装;
Code Recommenders里面带上面那个Snipmatch功能;
它的片段匹配就像这种(eclipse自己的不能这样匹配):
ok,下面研究下Content Assist,打开Window>>Preferences,选java>>Editor>>Content Assist;
先看一下Content Assist下面的Advanced。(后面带Code Recommenders的是插件的)
代码提示有两种,一种是在任意位置敲“Alt+/”打开提示,一种是输入“.”后的自动提示。不管用哪种方式打开,首次打开的页面就是default页(使用Default Proposal Kinds里的勾选的匹配),eclipse会把Default里勾选的全都匹配然后都显示在default页里。打开default页后再次按“Alt+/”会轮询到下一页(defalut页下面的“Press‘Alt+/’to show java Proposals”提示下一页是啥)。
轮询顺序是根据下面那块Content Assist cycling里的配置,轮询勾选的并按照从上到下顺序,可以手动Up和Down调整顺序,轮询一遍又回到default页继续重复轮询。
下面看下Content Assist,分三块Insertion、Sortion and Filtering、Auto Activation。
1.Insertion
a.插入的填充方式
勾选Completion inserts,插入提示的时候直接插入,后面字符后移:
插入后后面的ddd不覆盖。
勾选Completion overwrites,插入提示的时候把后面字符覆盖掉(后面字符有底色):
插入后后面字符都覆盖了。
有提示页的时候按住Ctrl会临时切换到另一个选项,然后选提示后回车插入。
b.候选匹配只剩一个的时候是否自动填充
勾选,当只剩一个匹配的时候Alt+/会直接填充上去:
按alt+/后
c.全部候选匹配前面字符都一致的时候是否填充一致的字符
测试:
不勾选按Alt+/后,不会填充show里的ow;
勾选后按Alt+/后sh后面多了ow;
d.是否只在敲回车后填充
不勾选按“(”、“空格”、“回车”都会填充,勾选只有按“Enter”才填充。
e.导入方式
不勾选,全名方式:
按Alt+/回车
勾选,使用import导入:
Alt+/并回车后
f.填充的方法参数填充方式
勾选Insert parameter names,将方法定义的参数名填入:
回车
勾选Inser best guessed arguments,将从代码上下文找最匹配的参数填入,找不到会填入0或者null:
提示并回车
2.Sorting and Filetering
a.匹配候选排序方式
relevance按相关性排(通常用这个);
alphabetically按照字母表顺序排;
b.驼峰匹配
测试:
勾选匹配:
Alt+/匹配了X___Y___(如果此时也勾选了填充common Prefixes会填充成XYy)
c.匹配子字符串
勾选:
不勾选:
这里用Code Recommenders插件比较好用。
d.是否隐藏不可访问的匹配
不勾选会把私有的等访问不到的匹配也显示:
e.是否隐藏不建议使用的引用
目前发现,只是会隐藏java自己的带@Deprecated标签的项,比如finalize()方法;
3.auto activation
a.启用自动提示
b.延迟多少毫秒自动提示
c.啥时开始自动提示
输入“.”后自动提示default页,可以改成“.qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM”,在输入“.”或者任意字母后都自动提示(不用老按Alt+/了)
d.啥时开始文档注释的自动提示
默认是在文档注释里按“@”或者“#”的时候:
2020/5/15:不知啥时起我的Eclipse里Code Recommenders安装不上了。
今天从网页上查资料偶然发现一个叫Codota的插件,搞下来试了试。
去Eclipse的marketplace直接搜Codota是搜不到的:
点击Browse for more solutions继续搜索:
安装完效果是这样的:
安装完Codota会自动帮你设置Content Assist:
参考: