值得尝试的新工具
- ag: 比grep、ack更快的递归搜索文件内容。
- mycli: mysql客户端,支持语法高亮和命令补全,效果类似ipython,可以替代mysql命令。
- shellcheck: shell脚本静态检查工具,能够识别语法错误以及不规范的写法。
- cloc: 代码统计工具,能够统计代码的空行数、注释行、编程语言。
VS Code
- 列模式:
shift + option + ↕️
- 快速打开:
⌘ + P
- 连续选中光标所在的单词:
⌘ + D
Sublime Text
Shortcut key
⌘ + P
: 快速打开文件⌘ + R
: 打开纲要列表⌘ + D/G
: 同步编辑/类似vim#
and*
⌘ + M
: 括号跳转⌘ + F
: Enter查找下一个,Shift + Enter
查找上一个⌘ + X
: 删除当前行⌘ + L
: 选择整行, 按住⌘继续按L则持续选择⌘ + Shift + L
: 多行选中后, 同时编辑这些行⌘ + 左键点击
: 多处同时编辑Ctrl + G
: 跳转到行Shift + Tab
: 折叠, 在看很长的Markdown文档时有用
Plugin
- Encoding: GBK Encoding Support, CovertToUTF8
- Syntax Checker:
- Phpcs for sublime2 (http://alfred-long.iteye.com/blog/1668074)
- SublimeLinter(https://github.com/SublimeLinter) 检测代码语法错误,支持C/Java/Python:
- sublimelinter-php
- sublimelinter-py
- sublimelinter-json
- sublimelinter-jscs
- sublimelinter-cppcheck
- SublimeCodeIntel(https://github.com/SublimeCodeIntel/SublimeCodeIntel) 代码补全, 定义跳转;
- Alignment:格式化代码Ctrl+Alt+A;
- SublimeCodeIntel:
- Jump to definition = Alt+Click
- Jump to definition = Control+Super+Alt+Up
- Go back = Control+Super+Alt+Left
- Manual Code Intelligence = Control+Shift+space
IntelliJ IDEA
Editing(编辑)
Alt + Enter
: 显示建议/导入包 ⭐️Control + Space
: 基本的代码补全(补全任何类、方法、变量) ⭐️⌘ + J
: 插入自定义动态代码模板⌘ + Alt + J
: 弹出模板选择窗口,将选定的代码使用动态模板包住⌘ + Alt + T
: 把代码用if, for等代码块包起来(当前行或选定的行)Ctrl + Alt + O
: 优化import ⭐️⌘ + Alt + L
: 格式化代码 ⭐️⌘ + /
: 注释/取消注释与行注释⌘ + 加号
: 展开当前代码块⌘ + 减号
: 折叠当前代码块⌘ + Shift + 加号
: 展开所有代码块⌘ + Shift + 减号
: 折叠所有代码块
Search/Replace(查询/替换)
Shift + Shift
: Search anywhere ⭐️Ctrl + N
,Ctrl + Shift + N
: 查找类, 查找文件Ctrl + F
,Ctrl + Shift + F
: searchF2
或Shift+F2
: 上个/下个错误F3
或Shift+F3
: 上个/下个查找Alt + F7
: find usage
Navigation(导航)
⌘ + Alt + ←/→
: Navigate back/forward⌘ + E
: 显示最近打开的文件记录列表⌘ + F12
: 弹出当前文件结构Ctrl + H
: 显示类的继承层级(列出上下继承结构) ⭐️⌘ + Shift + H
: 显示方法继承层级(例如显示某个抽象类的所有实现) ⭐️Ctrl + Alt + H
: 显示调用层次结构 ⭐️
VCS/Local History(版本控制/本地历史记录)
Command + K
: 提交代码到版本控制器 ⭐️
Refactoring(重构)
Shift + F6
: 重构
UI(界面)
⌘ + 1
: Project⌘ + 7
: Structure⌘ + 8
: Hierarchy⌘ + 9
: Version Control
插件
- Lombok
- Code iris: 显示类的Diagrams
- mongo4idea
Android Studio
- 格式化代码
⌘ + Option + L
Ctrl + Alt + L
- 删除行
⌘ + Delete
Ctrl + Y
- 快捷生成结构体
⌘ + Option + T
Ctrl + Alt + T
- 快捷覆写方法
⌘ + O
Ctrl + O
- 快捷定位到行首/尾
⌘ + Left/Right
Ctrl + Left/Right
- 文件方法结构
⌘ + F12
Ctrl + F12
- 查找调用的位置
Ctrl + Option + H
Ctrl + Alt + H
PHPStorm(Win)
Ctrl + j
常用的代码片段Ctrl + Alt + 左右方向键
,定位到上一次编辑的位置Ctrl + F12
,快速查看当前文件的所有方法Ctrl + Alt + L
,格式化代码Ctrl + N
,根据类名称查找Ctrl + Shift + N
,根据文件名查找
Eclipse(Win)
快捷键
- Alt+/: 补全
- Ctrl+1: 快速修复建议
- Ctrl+D: 删除当前行
- Ctrl+Del: 删单词, 类似VIm的
daw
- Ctrl+E: 打开的标签之间切换
- Ctrl+M: 最大化当前的Edit或View, 配合F12(编辑窗口获得焦点), 可以立刻最大化代码编辑栏
- Ctrl+L: 定位在某行
- Ctrl+K: 选中的单词, 相当于Vim的
#
, 反向Ctrl+Shift+K - Ctrl+Q: 定位到最后编辑的地方
- Ctrl+O: 快速显示 OutLine
- Ctrl+T: 快速显示当前类的继承结构
- Ctrl+Shift+P: 匹配括号
- Ctrl+Shift+G: 查找调用
- F2: 显示提示
- F3: 跳转定义
- F4/Ctrl+O: 打开继承, 只能看extends, 不能看implements
- Ctrl+H: 搜索
- Ctrl+Alt+H: 调用
- Ctrl+Shift+R: 搜索工程中的资源文件
- Ctrl+Shift+T: 搜索类(包括工程和关联的第三jar包)
- Alt+Shift+R: 自动的重命名一个类
- Alt+Shift+I: 自动内联选中的属性/方法
- Alt+Shift+j: 插入当前类/方法的注释
- Ctrl+/ : 对选中的部分进行注释
- Ctrl+Shift+/: 对选中的部分块状注释
- Ctrl+Shift+F: 格式化代码
- Ctrl+Shift+P: 匹配括号
插件
- m2e
- Egit
terminal(终端)
- Ctrl – a :移到行首
- Ctrl – e :移到行尾
vim
移动/跳转光标:
H
J
K
L
: ← ↓ ↑ →0
: 移动光标至本行开头$
: 移动光标至本行结尾w
: 移动到下个单词( a.Properties算两个单词)W
: 移动到下个单词(空格分隔的单词)3w
: 光标向前移动3个单词b
: 移动到上个单词, 如同wB
: 移动到上个单词, 如同Wgg
: 移动到第一行G
: 移动到最后一行:133
: 跳到第133行g;
在最近所有修改处跳转'.
跳转到最后修改的那一行
编辑:
i
: 在当前光标前面插入I
: 在当前单词开头插入a
: 在当前光标后面插入A
: 在当前单词尾部插入x
: 删除光标处字母d0
: 删除到行首d$
: 删除到行尾dd
: 删除光标所在行dw
: 删除光标所在单词>>
: 增加缩进<<
: 减少缩进
搜索:
fX
: 在本行搜索XFX
: 在本行搜索X(向后搜索)/Word
: 全文搜索?Word
: 全文搜索(向后)
粘贴/复制:
y
: 复制选中的yy
: 复制整行p
: 粘贴"+y
: 复制到+寄存器"+p
: 粘贴+寄存器的内容
补全:
CTRL + N
: 智能补全CTRL + X
,CTRL + K
: 根据字典补全CTRL + X
,CTRL + U
: 用户自定义补全CTRL + X
,CTRL + F
: 文件名补全
其他:
v
: 进入选择模式Shift + v
: 进入选择模式(行)Ctrl + v
: 进入选择模式(列)
vimdiff
- 启动:
vimdiff file1 file2
- 前一个:
[ + C
- 后一个:
] + C
- 在窗口间切换:
CTRL + W
W
- 将当前复制到另一个:
dp
, dp 意为 diff “put” , 也可以使用命令:diffput
- 将另一个复制到当前:
do
, do 意为 diff “obtain” , 也可以使用命令:diffget
, 之所以不用dg,是因为dg已经被另一个命令占用了 - 重新比较:
:diffupdate
git
stash
git stash
: 暂存没有add的修改git stash list
: 查看已经暂存的git stash apply
: 应用暂存的修改到当前分支
检出,分支,合并:
git clone
检出代码:- 显示remote:(origin是远程库的名字)
git remote -v
查看可以抓取和推送的origin的地址git remote show origin
, 比上面的更详细, 可以看到git pull/push到的默认是哪个分支.git branch
, 查看本地是哪个分支.
git checkout -b issue3 origin/master
, 从远端的master分支创建一个自己的分支issue3- 创建本地分支:
git branch [name]
—-只创建,不会自动切换分支 - 切换分支:
git checkout [name]
- 创建新分支并立即切换到新分支:
git checkout -b [name]
- 这时候再用
git branch
查看当前分支会显示是issue3分支. - 如果这时候
git pull
从服务器拉新代码, 会失败并提示服务端的分支(master/test/develop)没有和本地的issue3对应.
需要用git branch --set-upstream-to=origin/master issue3
设置远端的master和本地的issue3分支连接.
全部修完完成, 准备merge:
- 这时候再用
- 创建本地分支:
修改完后 合并源分支(issue3) 到远程目标分支(develop):
git pull --rebase
// merge 前先pull(更新dev), 如果先merge再pull, 会导致把pull下来的代码也当作自己修改的merge上去git checkout master
// 切换到目标分支git merge --no-ff issue3
git push origin
本地分支名:远程分支名如果merge时出现冲突,
- (4) 修改冲突文件, 然后重新
git add confilct_file
(重新staged), 将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域)。因为一旦暂存,就表示冲突已经解决。 - (5) 然后不要忘了:
git commit -m "conflict fixed"
- (6) 解决完冲突, push上去
git push origin master
- (4) 修改冲突文件, 然后重新
用
git rebase
替代merge, (issue3)到远程目标分支(master):- 切换到私有分支, 然后
git rebase master
// 变基到master - 如果有有冲突:
- (1) 修改冲突的文件, 然后
git add file
- (2) 不用commit而是 rebase –continue:
git rebase --continue
- (1) 修改冲突的文件, 然后
git checkout master
git merge issue3
- 切换到私有分支, 然后
Merge后, 撤销此次Merge :
git rebase --skip
(可能多次)删除本地分支:
git branch -d branch_name
# 如果这个分支没有被merge,git会提示git branch -D branch_name
# -D就是强行删除如需要删除远程分支:
git push origin --delete rc3
撤销和回滚:
- 修改了文件, 但还没有git add: 输入
git status
, 会提示用git checkout -- file
丢弃工作区, 文件回到服务器状态; - 修改并add了README.md, 还没有commit, 输入
git status
, 提示usegit reset HEAD filename
to unstage; - 已经commit/已经merge:
git log -p -n 3
查看最近3次历史, 记录下commit的哈希值, 然后执行git reset --hard commit_hashid
已经push:
git reflog
查看 commit_hashidgit reset --hard commit_hashid
git push -f
我们是要把本地的修改强制推送到远程分支上,在强推mster的可能会报错,意思是没有权限之类的错误,报错如下。
remote: GitLab: You don't have permission
To git@10.255.223.213:code-ddreader/media-hapi.git
! [remote rejected] master (pre-receive hook declined)- 是因为master分支一般会成为保护分支,所以我们首先要去除master为保护分支,才可以强推。
查看git历史
- 还没add:
git stauts
啦… - add了还没commit: 仍然可以
git stauts
啦… - 已经commit/push了:
git log -p -n 2
解释: -p 显示详细内容修改, -n 2显示最后两次的更改
有用的alias设置:
git config --global alias.pr "pull --rebase --no-ff" # |
以及: git config --global core.autocrlf false
使用LR而不是Win系统的CRLF
当你把git弄的一团糟时
svn
- svn add file
- svn commit -m “xxx” #提交修改
- svn up #更新到最新版本
- svn revert file #没commit时的撤销
- svn log
- svn merge -r 28:25 file #从当前28回滚到25
screen
Screen一个”会话”包括若干Windows, 每个Windows可被分割, 每个分割的区域可再创建新的Window
QuickStart
screen -ls
查看已有的sessionscreen -r id
连接已有的sessionscreen -S xx
创建xxx为名字的sessionc-a
"
查看已打开的shellc-a
S
上下分割当前Window, 分割出来的新Window没有运行任何Shellc-a
Tab
切换到新Windowsc-a
c
创建新shellc-a
"
查看&切换已经打开的shellc-a
d
保存session并退出c-a
k
杀死Window, 不可恢复
Window
c-a
c
: 创建一个windowc-a
"
: 查看已创建的windows列表c-a
d
: deattach 整个会话, 所有Windowsc-a
k
: 关闭当前windosc-a
Tab
: 切换c-a
n/p
: switchc-a
0~9
: 按序号切换到window
Split
c-a
S
: 上下分割, c-a tab移动到下面的窗口, 然后c-a c创建新的c-a
|
: 垂直分割
翻页&复制
c-a
[
: 进入复制模式, 之后可以像vim里一样操作h
j
k
l
,ctrl-b
,ctrl-f
, 翻页- 进入复制模式后, 空格开始选择, 空格结束
Session
screen -S test1
: 创建名为test1的会话screen -ls
: 查看deattach的会话screen -r id
: 重新连接screen -d -r id
: 如果上面的命令提示已经attach, 可以加-d参数先deattach
再attach
screem -X -S session_id quit
: 退出session, -X参数是执行的意思,执行quit命令.rm -rf /var/run/screen/S-xxx
: 删除会话
tmux
- tmux new-session -s “sessionX” 创建会话
- tmux attach -t sessionX 恢复会话
- c-b d : 再输入tmux attach可以恢复会话
- c-b “ : 上下新建一个面板
- c-b % : 左右新建一个面板
- c-b 方向 : 面板切换
- c-b Page : 进入翻页模式,此模式下可以用翻页键,q是退出翻页模式
- c-b: (注意冒号)输入
setw mode-mouse on
设置鼠标滚轮 - [ 复制模式
- ] 粘贴模式
phpstorm font setting
- file - settings - Editor - Colors & Fonts - General
- TYPO 取消勾选
- Search Result: 002B36/B58900
- Search Result(write access): 002B36/657B83
- Text Search Result: 002B36/B58900 配色参考(http://www.zovirl.com/2011/07/22/solarized_cheat_sheet)
- BrowseWordAtCaret: 002B36/CB4B16 安装(https://plugins.jetbrains.com/plugin/201?pr=idea)
neovim on windows
choco sources add -source https://www.myget.org/F/equalsraf/ -name equalsraf
choco install -pre neovim-qt
Eclipse Color Theme
http://www.eclipsecolorthemes.org/?view=theme&id=1115
AbstractTextEditor.Color.SelectionBackground=147,161,161
AbstractTextEditor.Color.SelectionForeground=7,54,66
Preferences -> General -> Editors -> Text Editors -> Annotations: Occurrences
and Write occurrences
改为”Box”