熟悉IntelliJ IDEA

IntelliJ切换目录问题

问题描述:双击idea.exe/idea64.exe均无任何反应。

解决步骤:

①查看错误日志

打开C:\UserSoft\ideaIU-2020.1.2\bin\idea.bat文件,用文本工具打开,在整个文件最后一行添加pause,效果如下:

转存失败重新上传取消

然后启动idea.bat,然后查看错误信息:

转存失败重新上传取消

然后想起来,我把IntelliJ从目录1剪切到目录2里面了,然后我在目录2里面启动时,结果IntelliJ还是从目录1中去加载,可问题是目录1已经没有了,看来我需要修改对应的配置文件,使其重新指向目录2。

②确定修改的配置文件

我在网上搜了下,jetbrains-agent.jar文件都是指向了“Edit Custom VM Options”菜单,那么,就可能在带有vm/options关键字的文件,果然,在IntelliJ安装目录的bin下分别发现了idea.exe.vmoptions、idea64.exe.vmoptions。

③修改配置文件

既然定位到了配置文件,我分别在idea.exe.vmoptions、idea64.exe.vmoptions配置了-javaagent参数,来重新指向最新的jetbrains-agent.jar路径,结果,启动idea.bat后还是报同样的错误,那我觉得,可能我这台笔记本的其他路径下还存有类似的配置文件,以至于始终加载的都是老旧的,基于目录1的配置信息。

然后我在C盘大搜,果然搜出几个重名文件:

然后在C:\Users\XXX\AppData\Roaming\JetBrains\
IntelliJIdea2020.1目录下找到了idea64.exe.vmoptions文件,里面果然指向了老目录:

我决定把/JetBrains整个目录都给删了,再试试看看:

果然,大功告成!!!!!

IntelliJ基本概念

①src类似于Eclipse下的src目录,用于存放代码。

②.idea、项目名.iml都是IDEA工程特有文件,类似于Eclipse工程下的.settings、.classpath、.project等。

③Eclipse中有workspace工作空间、project工程的概念,而在IDEA中只有project工程、module模块的概念,这里的Eclipse中workspace相当于IDEA的project,Eclipse中project相当于IDEA的module。很多大型项目由于分布式部署,所以按照这个思路,IDEA就这么设计的,一个project下面有很多module,且这些module都属于一个project。

官方插件地址

https://plugins.jetbrains.com/

Keymap

editor actions

m + enter

生成public static void main方法

ctrl + y

删除光标所在行内容

ctrl + delete

删除光标后面的内容

shift + 向下箭头

选中从光标开始,到光标下一行的所有内容

ctrl + d

复制当前行内容,到下一行

ctrl + alt + enter

光标移动到上一行,然后保持光标行号不变,光标下面内容回车换行

main menu

ctrl + alt + s

打开File-settings菜单,即打开系统设置菜单

ctrl + f

打开Edit-find菜单,即打开查找菜单

ctrl + r

打开Edit-replace菜单,即打开替换菜单

ctrl + alt + 向左箭头

打开Navigate-back,即切换到上一个文件

ctrl + alt + 向右箭头

打开Navigate-forward,即切换到下一个文件

ctrl + shift + n

打开Navigate-go to file,即通过输入文件名快速打开该文件

ctrl + o

打开Code-override methods,即重写父类方法

ctrl + l

打开Code-implement methods,即实现接口方法

alt + insert

打开Code-generate,即实现构造方法、setter、getter、equals、hashCode、toString等等方法

ctrl + h

查看继承关系

ctrl + shift + F10

执行当前类的main方法

ctrl + shift + alt + 鼠标左键选择

可以在当前文件中随意多选多处位置

alt + shift + 上下箭头

移动当前行

ctrl+ shift + t

基于某个类创建该类的单元测试

alt + 7

查看当前类的所有方法列表

ctrl + shift + u

大小写转换

ctrl + shift + n

查找文件

ctrl + alt + 向左箭头

ctrl + alt + 向右箭头

回退到上一个鼠标位置(可以把鼠标位置理解成一个链表,然后用左右箭头上下跳转) 

ctrl + w

基于某个坐标来选中某个区间,例如:如果选中方法名,则该快捷键则是选中整个方法;如果选中的是某一行的某个变量,则该快捷键则是选中整行代码;

Live Templates

iterations

fori

生成for(int i=0;)循环

itar

生成for(obj:objs)循环

iter

生成for(obj:objs)循环

other

geti

生成获取当前实例的方法

ifn

生成if(obj == nll)代码

inn

生成if(obj != nll)代码

main

生成main(Sting[] args)方法

output

serr

生成System.err代码

souf

生成格式化String的System.out代码

sout

生成System.out代码

soutm

生成打印当前类名、方法名的System.out代码

soutp

生成打印变量名、变量值的System.out代码

soutv

生成打印变量值的System.out代码

 

 

Postfix Completion

cast

obj.cast,系统会转化为:()obj,即强制类型转换。

castvar

如果通过上下文得知obj的是某个父类的子类型,那么通过obj.castvar就可以直接转化为父类型。

else

对boolean.else后,系统直接把boolean对象转化为if(! obj)代码块。

for

一个Array或者List对象obj.for,则系统直接把obj生成增强for循环。

fori

一个Array或者List或者Integer对象obj.for,则系统直接把obj生成for(int i=0)循环。

format

对一个String对象obj.format,系统直接生成代码:String.format(obj, );

if

对boolean.if后,系统直接把boolean对象转化为if(obj)代码块。

iter

一个Array或者List对象obj.iter,则系统直接把obj生成增强for循环。

lambda

对一个函数function().lambda,则系统直接把function()直接转化为lambda表达式。

nn

如果一个obj.nn,则系统会生成if(obj != null)的代码。

null

如果一个obj.null,则系统会生成if(obj == null)的代码。

return

如果一个obj.return,则系统会转化为如下形式:return obj;

serr

一个obj.serr,系统会生成如下代码:

System.err.println(obj);

souf

一个obj.souf,系统会生成如下代码:

System.out.println(“”,obj);

sout

一个obj.sout,系统会生成如下代码:

System.out.println(obj);

soutv

一个obj.soutv,系统会生成如下代码:

System.out.println("obj = " + obj);

switch

一个obj.switch,系统会生成obj的switch代码。

throw

一个obj.throw,系统会生成

throw   obj。

try

一个function().try,则会生成包裹function()的try-catch代码。

while

一个boolean.while,则会生成该boolean对象的while循环。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值