嗯..! 2017 年 09 月 共 2 篇日志。 继续努力。

IDEA 快捷键汇总

智能提示

有过实际编程经验的读者都应该知道,任何一款 IDEA ,是否好用和受欢迎的第一要素就是其智能提示的准确性和快速性。所以,我们先看看 IntelliJ IDEA 中的代码智能提示功能。

Space 就是指空格键

功能 快捷键
基本的代码提示 Ctrl+Space
更智能的按照类型信息提示 Ctrl+Shift+Space
自动定位到代码错误提示处 F2Shift+F2
快速自动修复错误代码 Alt+Enter
自动补全末尾的字符,包括行尾的反括号和分号 Ctrl+Shift+Enter

代码重构

有着实际编程经验的读者肯定或多多少地重构过别人或自己的旧代码,特别是在阅读了 《重构:改善既有代码的设计》之后,有着代码洁癖的读者肯定有经常重构旧代码的需求。实际上,在 Eclipse 中已经提供了很多强大和智能的重构功能。但是,IntelliJ IDEA 后来居上,提供了更多、更智能的重构功能。智能提示结合重构功能使得 IntelliJ IDEA 下的 TDD 开发变得十分简单和流畅。

功能 快捷键
重构功能大汇总,又称为 Refactor This Ctrl+Shift+Alt+T
重命名 Shift+F6
提取变量 Ctrl+Alt+V

代码生成

在日常的编程实践中,笔者经常需要编写一些重复且常有的代码片段。实际上,在 Eclipse 和 IntelliJ IDEA 中都提供了非常便捷的代码模板来减少开发工程师的重复操作。此类快捷键的使用频率很高。

Tab 是代码模板的触发按钮,生成 boilerplate 样板代码片段。

功能 快捷键
for 循环 fori+Tab
System.out.println 语句 sout+Tab
main 方法 psvm+Tab
查询所有代码模板 Ctrl+J
自动生成构成函数、toString函数、getter/seter、重写父类方法等 Alt+Insert

后缀自动补全(Postfix Completion) :示例如下

  • user.for+Tab => for(User user : users)
  • user.getBirthday().var+Tab => Date birthday = user.getBirthday()

高效编辑

在代码的编辑过程过程中,IntelliJ IDEA 参考 vim、Emacs等,提供了一套非常智能、高效的编辑快捷键。

功能 快捷键
根据语言的语法特性来扩展或收缩光标所选范围 Ctrl+WCtrl+Shift+W
字符 为单位进行前后移动 LeftRight
单词 为单位进行前后移动 Ctrl+LeftCtrl+Right
代码块 为单位进行前后移动 Ctrl+/Ctrl+Shift+/
删除当前行 Ctrl+Y
复制当前行并插入在下面一行 Ctrl+D

查找打开

对于 Java 程序员而言,Eclipse 中的查找和打开资源功能是一个经常使用和便利的功能。当然,IntelliJ IDEA 也提供了同样的便利性,而且还进行了智能加强。

功能 快捷键
打开类、文件等资源 Ctrl+NCtrl+Shift+N
全局搜索(Serarch Every Where) Shift+Shift
打开当前类的继承层次窗口 Ctrl+H
在类的继承层次窗口进行跳转 Ctrl+BCtrl+Alt+B
查看当前类的所有方法 Ctrl+F12
查找类或者方法的使用 Alt+F7
当前窗口中进行文本查找 Ctrl+F
全工程中进行文本查找 Ctrl+Shift+F
在查找的所有匹配处间进行移动 F3Shift+F3

基础功能

实际上,除了上述的这些专题快捷键,IntelliJ IDEA 还提供了非常多的基础功能快捷键。如果读者能够熟练地掌握这些快捷键的用法,那么基本可以做到双手在 95% 的时间内不需要离开键盘,开发效率势必大大地提高。

功能 快捷键
查询所有的 IntelliJ IDEA 命令和对应快捷键 Ctrl+Shift+A
自动新建类、文件、文件夹等资源 Alt+Insert
优化 import 列表 Ctrl+Alt+O
格式化代码 Ctrl+Alt+L
聚焦到编辑窗口中 ESC
聚焦到工具窗口中 Alt+NUM
在编辑窗口的标签页间进行切换 Ctrl+Tab
打开最近访问过或者编辑过的文件 Ctrl+ECtrl+Shift+E
创建单元测试用例 Ctrl+Alt+T
开始运行程序 Alt+Shift+F10
开始调试程序 Shift+F9
停止程序 Ctrl+F2
调试程序时 F7/F8/F9 对应 Step into、Step over、Continue

最终榜单

最终,我们根据所有快捷键的使用频率和功能性,总结出一个 IntelliJ IDEA 的十强榜单。

功能 快捷键
智能补全 Ctrl+Shift+Space
智能修复 Alt+Enter
重构一切 Ctrl+Shift+Alt+T
万能插入 Alt+Insert
自动完成 Ctrl+Shift+Enter
全局搜索 Shift+Shift
命令查找 Ctrl+Shift+A
模板触发 Template/Postfix+Tab
智能选取 Ctrl+W
切换标签 Ctrl+Tab

阅读全文 »

Ubuntu常用命令 有更新!

apt-get:
debian系系统的软件包管理程序(其图形化前端就是大名鼎鼎的新立得了),会自动帮你搞定依赖关系
最常用参数:
update —-与你的软件源(在/etc/apt/sources.list中列出)更新软件包列表,换源后需要执行
upgrade —-根据update得到的源软件库与本地已经安装的对比,(如果需要升级就)全部升级
install —-安装软件包(可以使用tab补全软件包的名字,比较方便)
remove —-卸载软件包
purge —-卸载软件包,同时删除该软件的配置文件
source —-从源里下载软件包的源码到当前目录(执行此命令的目录)并解压(除非指定–download-only参数)
该地址由/etc/apt/sources.list中的 deb-src 行指定
check —-用来(自动)修复(已装)软件包之间的依赖关系
clean —-清除/var/cache/apt/archives/包括其子目录partial/下的所有软件包缓存
autoclean —-比clean常用,我的理解是删除低版本的缓存而保留高版本的(或者包括非当前源里的软件包?)
aptitude:
此为PT同学补充,他的说法是aptitude比apt-get少个横线,tab补全比较容易(=.=)~大概神牛都比较懒吧
不得不提下蛋蛋童鞋以前说过的ubuntu彩蛋:) <仅限于UBUNTU 8.04>
man apt —-最后会看到 “本apt有着超级牛力” or “this APT has a super-cow power”
man aptitude —-会看到 “这个aptitude没有超级牛力”
看看aptitude的参数,你就会明白为什么aptitude会标称”高级软件包管理程序”了
最常用参数:
search —-在(你的源的)所有软件包列表中搜索该软件,search的表达式可以很复杂,具体看man
其余常用参数同apt-get

cat:
把(一个或多个)文件内容(连接)显示到标准输出
当文本文件很小,而且你只是想看下,并不打算用gedit或者vim之类编辑器编辑的时候,可以cat一下,我是用来配合grep使用

cd:
切换当前工作目录
不同于其他命令,这是一个shell内置命令,所以没有手册页可看…够基础,所以才会出现在本篇文章中(=.=)郁闷
最常用参数
. —-切换到当前目录(貌似没有什么意义)(.这个目录可以通过ls -a看到)
.. —-切换到上层目录
—-回到家目录(/home/你的登录名/)

chmod:
改变文件的权限位
linux文件系统的权限位有两种表示方法,要是详细说下,非得累死老鼠不可=.=,所以只说8进制数表示:)
简要介绍下:ls -l可以显示出文件的权限,比如(-rwxr-xr–),代表了三种用户的权限
第一个rwx,代表文件所有者的权限,即(读,写,执行),用二进制表示为111,代表八进制中的4+2+1=7
第二个r-x,代表文件所有者同一用户组其他用户的权限,即(读, ,执行),用二进制表示为101,代表八进制中的5=4+0+1
第三个r–,代表其他用户的权限,即(读, , ),二进制表示为100,代表八进制的4=4+0+0
所以这个文件的权限位为754
这也就是chmod的用法,例如chmod 751 myfile #将该文件权限设定为rwxr-x–x
最常用参数:
-v —-列出当前正在执行的步骤
-R —-递归式,即改变非空目录下的一切为指定权限

cp:
拷贝文件和目录
最常用参数:
-b —-为每个已经存在的目的文件作个备份
-d —-遇到软链接时不拷贝软链接所指向的文件;拷贝时保留links属性(链接数)
-p —-保留文件的访问权限,所有者,和时间戳
-R和-r —-递归式拷贝(cp过程遇到非空目录才有效),即拷贝目录,子目录,子目录的子目录…..
-a —-作用同-dpR
-s —-并不真的做拷贝,而只是为每个文件作软链接(符号链接)
-u —-同下面 mv 的-u参数

head, tail
就像这两个名字,一个显示文件头部,一个显示尾部
最常用参数:
-n —-指定输出的(头部或尾部)行数, 当没有此参数时,默认显示10行

ifconfig:
配置网卡
最常用参数:
没有参数 —-列出当前活动网卡的状态
-a —-列出所有网卡的状态
interface —-指定网卡名称比如eth0
up —-唤醒该网卡
down —-关闭该网卡
arp,mtu,netmask addr,…等等很多参数 =.=

ln:
为文件建立链接
linux的链接分为两种:硬链接和软链接,ln默认建立硬链接(hard link),两种的区别请自己搜索:)
最常用参数:
-s —-建立软链接(符号链接,可以理解为win下的快捷方式)
-f —-如果要建立的链接名已经存在,则删除之

ls:
显示目录内容
最常用参数:
-a —-显示指定目录所有文件,包括文件名以 . 开头的文件
-l —-显示文件详细信息(包括文件类型,权限,修改时间,访问时间,大小,文件名…)
-h —-将文件大小以方便阅读的形式表示出来,配合 -l 参数使用,常有奇效

man:
阅读参考手册of~
题外话:HX说这是linux最最难学的命令,因为man你学好了,就没有什么命令能难倒你了,=.=无敌了
man可以查的不仅仅是命令额(当然,因为man是无敌的嘛/ch)
最常用参数:
man 阿拉伯数字
阿拉伯数字1: 可执行程序(一般为用户安装的程序,如果提供了manpages的话)和shell命令
阿拉伯数字2: 系统调用(例如 open调用,socket调用,chmod调用 等等等等),先装manpages-dev先
阿拉伯数字3: 库函数调用(例如 man 3 printf),先装manpages-dev先
…….
当你执行man ls 时, 和 man 1 ls结果是一样的,因为ls在man手册中只有一个入口
当你想看chmod调用的手册页时,就要特别指定 man 2 chmod了~~因为chmod不止有一个入口
在man的时候,可以通过j,k上下移动(和vi中类似),可以通过/查询,通过n,N查找下个,上个匹配(和vi类似)
q退出(也和vi类似….)
比较有意思的一点:
由于man 本身是个命令,所以,连man都是可以man的 =.=

mkdir:
创建一个目录
最常用参数:
-p —-如果给出的路径中父目录不存在,则同时创建父目录

mount:
挂载文件系统(可理解为挂载一个分区)
最常用参数:
-t —-指定文件系统类型,比如iso9660(挂载iso镜像为光盘,相当于虚拟光驱),ntfs,ext3,rfs等等
-l —-列出所有已经挂载的文件系统,支持卷标
-a —-挂载fstab中记录的所有分区
-n —-挂载的时候不写入/etc/mtab
-o —-相当常用的一个参数,指定挂载文件系统的”选项”,比如noatime,用来挂载BT专用分区很合适
mv:
移动或者更名文件,取决于目的目录是否为当前目录
最常用参数:
-b —-为每个已经存在的目的文件做个备份(防止覆盖)
-f —-不提示是否覆盖已经存在的目的文件
-i —-与-f参数相反
-u —-仅当源文件比目的文件更新或者目的文件不存在时候才移动
-v —-显示移动文件的进度(个人总是推荐使用此参数,明白你在做什么)

ps,top:
列出当前命令的执行状态,ps为静态,top为动态(top时’q’退出)
ps:这个命令本人更常用些,推荐给你看看=.=
最常用参数(ps多用参数集合,而不是单个参数,并且配合grep使用)
-ef —-以标准语法列出当前所有进程状态,例如ps -ef | grep eva #列出eva的进程状态
aux —-以BSD语法列出………………………………..
-ejH —-列出进程树
-eLf —-同时列出线程状态

rm, rmdir:
rm:删除文件或目录,rmdir:删除一个空目录(此命令个人认为没啥用,可以用rm -r替代)
rm最常用参数:
-f —-不提示不存在的文件,直接跳过
-i —-每个删除动作都提示 (=.= 删除多的话岂不是烦死)
-I —-删除多个文件(多于3个时)或者递归式删除(对于非空目录)提示一次
-r和-R —-递归式删除该目录下的一切东东
-v —-显示每个文件的删除动作(个人总是推荐使用此参数,明白你在做什么)

sudo,su:
这大概是装好系统之后第一个要用的命令吧?
sudo我们主要用来临时提升权限,主要用以管理员(超级用户)的权限来运行命令,当需要修改当前登录用户力所不能及的文件/目录
时需要用sudo,或者su -c,当然sudo和su的作用范围不仅仅如此
可以使用visudo来编辑/etc/sudoers文件来修改sudo更详细的动作(比如记住密码的时间戳长度),请谨慎修改!
sudo nautilus可以获得权限
如果下载deb包,直接使用“_sudo dpkg -i 包名”_来安装就可以了,要是碰到有其他依赖未安装直接使用
sudo apt-get install -f来安装依赖,再使用dpkg -i命令安装deb包就可以

sh:
在终端解释执行
类似于’./’的形式,但PT给了不同点: ‘./’仅仅对当前目录下有执行权限的程序才有效,’sh’则不管这套
想想也是哈, ‘./’仅仅是给出了一个文件的路径(在当前目录下)而已, 但这个文件能不能执行就不好说了
所以用sh总是正确的

shutdown:
关闭系统,如果停留在TTY,请改用halt, poweroff等命令
常用参数:
+m —-指定关机延迟的分钟
-c —-取消一个等待关机的请求(关掉运行此命令的终端也可:))
now —-立即关机
hh:mm —-手动指定时间(以24小时计)

tar:
打包/解包
这个tar不多说了吧..到处都是tar.gz,tar.bz2的东东
和ps命令一样,tar一般不用单个参数,而是多个参数的组合,记住参数x是解压(extract),c是创建包(creat)即可
最常用参数:
-xvf —-详细列出解包的步骤
-cvf —-详细列出打包的步骤
-j —-用来说明这是个tar.bz2包,例如tar -xjvf myfile.tar.bz2
-t —-列出包中的文件列表
—–打包时常追加的参数:
-r —-追加到压缩包中
-u —-只把比包中更新的文件追加进去
-h —-不把符号链接添加到包中,而是添加此符号链接指向的文件
附加说明:tar是个太强大的东东,常用的操作也就是打包解包,高级功能还是参阅man =.=

touch:
改变文件时间戳,默认包括修改时间和创建时间,默认修改为当前时间,默认如果文件不存在就新建

阅读全文 »