Idea相关
快捷键
快速返回
在 macOS 的 IntelliJ IDEA 中,当你通过 Command + 鼠标左键 点击一个方法跳转到其定义后,可以使用以下快捷键快速返回到之前的位置:
- 后退(返回原位置):
Command + [ - 前进(如果误退过多,想返回新位置):
Command + ]
拷贝方法名、包名、类名
类似于这样:com.example.package.ClassName#methodName 。过程如下:
-
定位到方法:
- 打开项目,找到包含目标方法的类文件。
- 将光标移动到方法名上。
-
复制方法信息:
- 方法名:直接选中方法名(如
methodName)并复制。 - 包名和类名:
- 右键点击方法名,选择 Copy / Paste Special → Copy Reference(或使用快捷键
Ctrl+Shift+C)。 - 这会将全限定名(包名.类名#方法名)复制到剪贴板,例如:
com.example.package.ClassName#methodName
- 右键点击方法名,选择 Copy / Paste Special → Copy Reference(或使用快捷键
- 方法名:直接选中方法名(如
Debug
在 IntelliJ IDEA 中,调试(Debug)是一项非常重要的功能,帮助开发者逐步执行代码并观察程序运行状态。
- resume:继续运行程序到下一个断点。
- pause:临时停止程序,查看当前状态。
- step sver:执行当前行但不进入方法内部。
- step into:执行当前行并进入方法内部。
- step out:跳出当前方法,回到调用处。
1. Resume Program(继续执行程序)
- 含义:让程序从暂停状态继续执行,直到遇到下一个断点(Breakpoint)或程序自然结束。
- 图标:▶(绿色三角形)。
- 快捷键:
- Windows/Linux:
F9 - macOS:
F9或⌥+⏎
- Windows/Linux:
- 使用场景:当你暂停调试后,想让程序恢复正常运行,直到下一个断点处再次暂停。
2. Pause Program(暂停程序)
- 含义:强制暂停程序的执行,以便在当前代码位置查看变量值、堆栈信息等。
- 图标:⏸(两个竖线)。
- 快捷键:
- Windows/Linux:
F9(与Resume共用快捷键,需结合上下文判断) - macOS:
Cmd+F2
- Windows/Linux:
- 使用场景:在程序运行过程中临时暂停,快速检查当前状态(例如发现程序行为异常时)。
3. Step Over(逐过程,跳过方法内部)
- 含义:执行当前代码行,并跳转到下一行代码,但不进入当前行调用的方法内部。
- 图标:→(箭头向右)。
- 快捷键:
- Windows/Linux:
F8 - macOS:
F8
- Windows/Linux:
- 使用场景:当你想快速执行当前行代码(例如调用某个方法),但暂时不需要查看方法内部逻辑时使用。
4. Step Into(逐行进入方法内部)
- 含义:执行当前代码行,并进入当前行调用的方法内部,逐行调试该方法。
- 图标:↓(向下箭头)。
- 快捷键:
- Windows/Linux:
F7 - macOS:
F7
- Windows/Linux:
- 使用场景:当你需要深入查看某个方法的具体执行过程(例如检查方法内部的变量或逻辑)时使用。
5. Step Out(跳出当前方法)
- 含义:结束当前方法的调试,直接跳转回调用该方法的位置的下一行代码。
- 图标:↑(向上箭头)。
- 快捷键:
- Windows/Linux:
Shift+F8 - macOS:
Shift+F8
- Windows/Linux:
- 使用场景:当你在调试某个方法内部时,发现不需要继续深入,想快速回到方法调用处时使用。
美化
- Atom Material Icons:美化图标
- Material Theme UI:主题美化,个人使用Material Deep Ocean
- 设置背景图片:Setting -> Apperance & Behavior -> Apperance -> BACKGROUND IMAGE
注释
File and Code Temeplates
前往 Setting -> Editor -> File and Code Temeplates
HTML File
<!--
@desc #[[$Description$]]#
@author 鹤童 (<a href="mailto:chenwenpeng.cwp@alibaba-inc.com">发送邮件</a>)
@date ${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE}
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>#[[$Title$]]#</title>
</head>
<body>
#[[$END$]]#
</body>
</html>
Class
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
/**
* @desc ${description}
* @author 鹤童 (<a href="mailto:chenwenpeng.cwp@alibaba-inc.com">发送邮件</a>)
* @date ${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE}
*/
public class ${NAME} {
}
Interface
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
/**
* @desc ${description}
* @author 鹤童 (<a href="mailto:chenwenpeng.cwp@alibaba-inc.com">发送邮件</a>)
* @date ${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE}
*/
public interface ${NAME} {
}
Enum
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
/**
* @desc ${description}
* @author 鹤童 (<a href="mailto:chenwenpeng.cwp@alibaba-inc.com">发送邮件</a>)
* @date ${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE}
*/
public enum ${NAME} {
}
Annotation
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
/**
* @desc ${description}
* @author 鹤童 (<a href="mailto:chenwenpeng.cwp@alibaba-inc.com">发送邮件</a>)
* @date ${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE}
*/
public @interface ${NAME} {
}
Live Templates

/**
* @desc $ENDS$
* $param$
* @return $return$
* @author 鹤童 (<a href="mailto:chenwenpeng.cwp@alibaba-inc.com">发送邮件</a>)
* @date $createdtime$ $hourandminute$
*/

groovyScript(" def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); def types=\"${_2}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) { if(i!=0) result+= ' * '; result+='@param ' + params[i] + ' - '+ ((i < params.size() - 1) ? '\\r\\n' : ''); }; return result; ", methodParameters(), methodParameterTypes())

浙公网安备 33010602011771号