各位码农同胞们,今天俺要宣布一个大咪咪!我们用惯了的那个号称“Java第一IDE”的IDEA。小爷我,没错,就是我,决定正式要跟它“分手”了!
我知道你们要说啥,“IDEA那么香,你是不是脑子瓦特了?” 嘿,你别说,这次我还真不是一时兴起,我连压箱底的祖传快捷键都打算搬家到新欢Cursor那里去了!
俗话说得好,旧的不去,新的不来,为了更丝滑的未来(和可能更智能的AI?),胸弟盟,这次,我是玩儿真的!坐等Cursor带我起飞,代码从此不再卑微!
1. 快捷键
| 作用 | IDEA | Cursor |
|---|---|---|
| 当前文件文本查找 | Ctrl + F | Ctrl + F |
| 当前文件文本替换 | Ctrl + R | Ctrl + H |
| 全局文本查找 | Shift + Ctrl + F | Shift + Ctrl + F |
| 全局文本替换 | Shift + Ctrl + R | Shift + Ctrl + H |
| 查找文件 | Ctrl + Shift + N | Ctrl+P |
| 搜索所有 | Shift + Shift | Ctrl+P 搜索时以#开头 |
| 格式化代码 | Ctrl+Alt+L | Alt+Shift+F |
| 生成代码(如get,set方法,构造函数等) | Alt+Insert | 右键 Source Action |
| 自动缩进 | Ctrl+Alt+I | Ctrl + [ 向前缩进,Ctrl + ] 向后缩进 |
| 列出变量引用处 | Alt + F7 | Shift+F12 |
| 快速找到成员变量的出处 | Ctrl + 鼠标点击 | F12 |
| 重命名 | Shift+F6 | F2 |
| 快速选中相同文本 | Alt + J | Ctrl+D |
| 重写方法 | Ctrl+O | 输入需要重写的方法名,选择即可 |
| 实现方法 | Ctrl+I | 输入需要实现的方法名,选择即可 |
| 快速修复选择 | Alt + enter | Ctrl+. |
| 删除剪切当前行 | Ctrl + X | Ctrl + X |
| 复制当前行 | Ctrl +D | Alt+Shift+↓ |
| 显示方法参数信息 | Ctrl+P | Ctrl+Shift+Space |
| 跳转历史光标所在处 | Ctrl + Alt + ←/→ | Alt + ←/→ |
| 切换打开文件 | Alt + ←/→ 方向键 | Ctrl + Tab |
| go to(跳转指定行号) | Ctrl + G | Ctrl + G |
| 手动缩进 | 多行选中 Tab / Shift + Tab | 多行选中 Tab / Shift + Tab |
| 删除整行 | Ctrl + Y | Shift+Delete |
| 快速进入变量/方法/类的定义处 | Ctrl+点击 | 光标+F12 |
| 撤销 / 取消撤销 | Ctrl + Z / Ctrl + Shift + Z | Ctrl + Z / Ctrl + Shift + Z |
| 代码自动补全:自动收尾 | Ctrl + Shift + enter | |
| 跳转到下一个高亮错误 或 警告位置 | F2 | |
| 类的层级关系 | Ctrl + H | 右键 Show Type Hierarchy |
| 类成员快速显示 | Ctrl + F12 | 左侧显示大纲窗口 |
| 方法快速跳转 | Alt + ↑/↓ |
2. 自定义代码片段
{
// Place your snippets for java here. Each snippet is defined under a snippet name and has a prefix, body and
// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
// same ids are connected.
// Example:
// "Print to console": {
// "prefix": "log",
// "body": [
// "console.log('$1');",
// "$2"
// ],
// "description": "Log output to console"
// }
"print": {
"prefix": "sout",
"body": [
"System.out.println(\"$0\");"
],
"description": "System.out.println"
},
"main": {
"prefix": "psvm",
"body": [
"public static void main(String[] args) {",
"$1",
"}"
],
"description": "public static void main(String[] args)"
},
"Class Doc Comment": {
"prefix": "/cdoc",
"body": [
"/**",
" * <p>",
" * ${1:${TM_FILENAME_BASE}}",
" * </p>",
" *",
" * @author ${2:Karl}",
" * @since $CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE ${CURRENT_HOUR}:${CURRENT_MINUTE}",
" */"
],
"description": "Class documentation template"
},
"Test": {
"prefix": "test",
"body": [
"@Test",
"public void test() {",
"",
" $1",
"}"
]
},
"ArrayList": {
"prefix": "list",
"body": [
"List<$1> list = new ArrayList<>();"
]
},
"HashMap": {
"prefix": "map",
"body": [
"Map<String, Object> $1 = new HashMap<>();"
]
},
"String": {
"prefix": "ps",
"body": [
"private String "
]
},
"Static String": {
"prefix": "fin",
"body": [
"public static final String $0"
]
}
}