定制Eclipse的Content assist(代码补全),比如空格键 "="键不上屏

本文介绍如何在Eclipse中实现类似Visual Studio的代码提示功能,并提供了解决空格和等号自动补全问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Eclipse具有代码提示功能, 但是默认的提示只有在输入"."时才会提示, 我们希望Eclipse可以像Visual Studio那样, 输入任何字母都可以自动提示, 按照如下方式进行修改即可: 

1. “window”→“Preferences”
2. 选择“java”,展开,“Editor”,选择“Content Assist”。
3. 选择“Content Assist”,然后看到右边,右边的“Auto-Activation”下面的“Auto Activation triggers for java”这个选项。其实就是指触发代码提示的就是“.”这个符号。
4. “Auto Activation triggers for java”这个选项,在“.”后加abcdefghijklmnopqrstuvwxyz字母,方便后面的查找修改。然后“apply”,点击“OK”。

按照上述方法修改后编写代码可以实现随时代码提示和补全功能, 但是在使用过程中问题又来了, 当按下空格键时会把第一行的内容自动上屏,其实很多时候就是想输一个空格而已. 如何解决, 在网上搜索了一下, 果然有人遇到同样问题, 参考下面解决方案, 顺利在Eclipse 3.7下解决问题.

参考文章:

引: http://johnlxj.blog.163.com/blog/static/16586556420117175344712/
以前只知道alt+/调出assist,后来发现可以所有字母都激活content assist(方法百度上都有,就不在这写了).用起来果然很爽.但是eclipse还是有些默认的设置不是很好,比如空格键和=号会把第一行的内容自动上屏,其实很多时候我就是想输一个空格或=号而已.这个在设置里面没办法设置.幸好eclipse是有插件机制的,可以通过修改插件的源码,然后导出成插件,再替换掉原来的插件来处理
1.先找到相关的插件
 打开Plug-ins View找到插件org.eclipse.jface.text,右键点击,选择import as Source Project,导入完成后,在你的workspace就可以看到这个project
2.修改代码
 在src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java文件中,找到这样一行代码
 char triggers = t.getTriggerCharacter();
 if(contains(triggers,key))
 在那行if判断里面,eclipse会判断key(就是你按下的键)是否在triggers,如果是,那就触发下面的第一行提示上屏的代码.所以我们要做的就是把空格和=号排除就可以了:
 if(key!='='&&key!=0x20&&contains(triggers,key))

3.把修改好的org.eclipse.jface.text导出
 右键点击你的workspace里的org.eclipse.jface.text,选择export-->Deployable plugins and fragments, next,destination 选择archive file,然后finish.你就可以在zip文件里看到生成好的jar ,用它替换掉eclipse/plugins里面的同名jar,就可以了

怎么我找不到src这个文件夹的
嗯 可能跟源码有关,你找找你的Eclipse IDE for Java EE Developers plugins目录下面有没有org.eclipse.jface.text的源码

EclipsePlug-in Development Environment (PDE)插件网址:
http://www.eclipse.org/pde/


我同时安装了Eclipse 3.5Eclipse 3.7, 按照上面的文章指导, Eclipse 3.5下无法对插件源码进行修改而在Eclipse 3.7下可以成功修改.


Eclipse 3.5 Galileo "import"对话框下没有"Plug-in Development"选项Eclipse 3.5下无法对插件"org.eclipse.jface.text"源码进行修改.


Eclipse 3.7  "import"对话框下有"Plug-in Development"选项可以对Eclipse 3.7下的插件"org.eclipse.jface.text"源码进行修改.


"Import As" 需要选择"Projects with source folders"



// 对源代码进行如下修改
default:
ICompletionProposal p= getSelectedProposal();
if (p instanceof ICompletionProposalExtension) {
ICompletionProposalExtension t= (ICompletionProposalExtension) p;
char[] triggers= t.getTriggerCharacters();
// hf modify
// eclipse 关闭空格、等号自动补全(上屏)功能
//if (contains(triggers, key)) {
 if(key!='='&&key!=0x20&&contains(triggers,key)) {
e.doit= false;
hide();
insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);
}
}


将修改后的工程导出, 再用导出后的"org.eclipse.jface.text_3.7.1.r371_v20110825-0800.jar"插件覆盖原来对应插件就好了.

已经修改好的"org.eclipse.jface.text_3.7.1.r371_v20110825-0800.jar"我已经上传到我的资源中, 需要的可以去下载.


### 代码补全工具及其实现方式 #### 工具概述 现代代码编辑器中的代码补全功能极大地提升了开发人员的工作效率。这些工具通常基于静态分析、动态分析以及机器学习算法来预测并提供可能的代码片段。例如,CodeMoss 是一款针对 VSCode 的智能补全插件,能够显著提高编程效率[^2]。 对于 C++ 开发者而言,Clangd 提供了一种高效的解决方案,支持全项目索引、代码跳转、变量重命名等功能,从而增强了代码补全的能力[^3]。而对于更广泛的场景,可以考虑构建自定义 AI 驱动的代码生成器,这种方案允许加入上下文管理、多语言支持和代码优化建议等高级特性[^1]。 --- #### 实现方式 ##### 基于规则的方法 传统的代码补全主要依赖语法解析树(AST)和词法分析。这种方法通过对源码进行静态分析,提取函数名、类名以及其他符号信息,进而完成简单的补全操作。然而,这类方法无法处理复杂的上下文关系或跨文件调用的情况。 ##### 使用 Clangd 进行语义级补全 Clangd 利用了 LLVM 编译框架的强大能力,提供了深层次的语言理解服务。以下是其实现的关特点: - **全项目索引**:通过预先建立整个项目的符号表,加速查找过程。 - **实时反馈**:利用增量编译机制,在修改少量代码时快速更新结果。 - **高精度匹配**:结合模板实例化规则,准确推断泛型参数类型。 ```cpp // 示例:Clangd 支持的功能演示 #include <vector> using namespace std; int main() { vector<int> vec; vec.push_back(42); // 自动提示 push_back 方法签名 } ``` ##### 构建 AI 驱动的智能补全系统 为了超越传统技术局限性,研究者们提出了融合自然语言处理技术和深度神经网络的新范式。具体来说,可以从以下几个方面入手: 1. **数据收集与预训练** - 获取大规模开源仓库作为训练素材集。 - 应用 Transformer 或 LSTM 类模型对序列模式进行编码解码练习。 2. **情境感知模块设计** - 记录历史交互记录,捕捉用户的偏好习惯。 - 动态调整候选列表权重分布,优先展示最有可能的选择项。 3. **性能优化策略** - 减少推理延迟时间,确保用户体验流畅无卡顿现象发生。 - 平衡资源消耗水平,防止因过度计算而导致设备过热等问题出现。 --- #### 推荐实践案例 如果目标是打造一个多平台兼容版本,则需综合考量各主流 IDE 插件生态系统的开放程度和技术成熟度。比如 Visual Studio Code 就因其高度可扩展性和活跃社区贡献而备受推崇;与此同时,JetBrains 家族产品线同样具备卓越表现力,特别是在企业内部协作环境下表现出色。 另外值得注意的是,尽管目前市面上已有少成熟的商业化选项可供选用,但从长远角度看自主掌控核心技术仍具有可替代的战略价值所在。 ---
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值