前言:
本笔记
- 仅针对 ’mac + iterm + 远程开发 ' 场景,其他场景暂不涉及,可能不适用
- 仅分享一些个人小经验、观点和习惯,主要目的是为了交流,了解更多、更快、更好的工具用法
- 记录和交流,加速成长,同时方便随时查阅
A、why 快捷键?
- 快捷键-快
- 快捷键可以让双手不离键盘
- mac 上鼠标有些鸡肋,快捷键 + 触控 就够了
B、why 工具?
个人以为:
- 人都是懒惰的
- “构思代码” 远重要于 “敲代码”
- 大量重复的劳动是没有价值的
- “工具”,换言之,就是“通用方法、类的抽象”,避免代码重复
- 当非常频繁使用一个工具的时候,为什么不深入了解、吃透它呢?
最终目的:让搬砖摆脱束缚,快速完成 “思想” 到 “代码”的转换。
一、mac
相比windows而言,linux 和 mac os:
- 更加透明,当具有sudo 权限时,Everything is under control.
- 系统和软件上给予了用户更大的自主性。允许根据个人习惯自定配置。
这两点对于搬砖工人有很强的吸引力
1.1 打开程序
- cmd + 空格
- 搜索程序
- enter
- (可以使用 Alfred 给你更强大的体验,没用过的童鞋可以google一下)
1.2 触控技巧
-
三指轻点查询(快速查看英文单词很有用)
- 配置路径:系统偏好设置 > 触控板
-
三指拖移(比如拖移选中一段文本)=按下鼠标拖移
- 配置路径:系统偏好设置 > 辅助功能 > 指针控制 > 触控板选项 > 启用拖移
1.3 键位修改
-
大写锁定键(中英切换键)更改为 Control 键,十分建议
- 配置路径:系统偏好设置 > 键盘 > 修饰键
-
原因:ctr 比大小写转换视频频次高出太多
-
替换后中英文切换可以:ctr + 空格 替代
-
其他键位修改
-
(例如 方向键替换 为 cmd + hjkl),
1.4 为 App 自定义快捷键的方法
-
配置路径:系统偏好设置 > 键盘 > 快捷键 > App 快捷键 > + > 选中App > 给对应菜单栏选项增加快捷键
- 例如在 Typora 程序中,自定义 插入代码块的 快捷键为:ctr + c
1.5 常用快捷键
-
聚焦搜索
cmd + 空格
-
全屏&取消
ctr + cmd +f
-
锁屏
ctrl + cmd + q
-
文件快捷键
-
剪切文件
cmd + option + v
-
返回上层路径
cmd + 向上箭头
-
通过路径访问访达
cmd + shift + g
-
-
新建文件快捷键
1.6 推荐软件
-
-
本地笔记软件(频繁用云不推荐),但是本地很安全,符合公司要求
-
默认不显示预览窗口,markdown编辑实时生效
-
轻量、酷炫、好用
-
相关配置:
-
-
即,在主题文件配置下(打开偏好设置 -> 打开主题文件夹 -> 新建 github.user.css 文件),增加 "主题.user.css"文件 写入
-
示例代码
-
/* 调整视图正文宽度 */ #write{ max-width: 90%; } /* 调整源码正文宽度 */ #typora-source .CodeMirror-lines { max-width: 90%; } /* 调整输出 PDF 文件宽度 */ @media print { #write{ max-width: 95%; } @page { size: A3; } } /* 调整正文字体,字体需单独下载 */ body { font-family: IBM Plex Sans; }
-
-
-
-
-
pdf expert
- 支持pdf 阅读、批注。
- pdf-expert + onedrive 可以在mac pad 之间同步
-
EdrawMax 画图软件
- 大量素材库
-
OmniPlan
- 甘特图
-
…
二、iterm2
2.1 profile 配置
目的:配置多个profile,使用时,cmd + o 快速打开
-
配置路径:preference > Profiles
-
每个profile 配置不同的 ssh 命令,登录不同的远程开发机。
-
每个远程可以自定义一些配置,如配色、字体大小、回滚行数历史等
-
示例:我建了4个(default为公司新堡垒机,腾讯云开发机,mac本地,公司旧堡垒机)
- terminal 以 256色启动,适配 tmux 和vim 配色
2.2 设置:触控板滑动==鼠标滚轮
-
配置路径:preference > Advanced > Mouse >
-
效果:可以在vim 中 触控上下滑动
-
tmux 中 上下触控会变成 回溯历史命令
- 解决办法: tmux前置快捷键 + [ (变为上下滚动屏幕)
- ctr + [ 重新变为 回溯历史命令
2.3 ssh session 复用
ssh 时,为了方便,避免每次登录输入密码,通常使用ssh密钥登录。
如果没有或者无法设置秘钥(如公司堡垒机), 需要使用密码登录,若每次都输入密码(网盾)十分繁琐。
可以设置ssh连接会话复用,登录成功后,在会话的生命周期内,再次登录同一台主机(比如新开一个窗口)不需要输入密码。
方法:在 mac ~/.ssh/config 文件中添加(没有则创建一个就好)
host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
三、shell 命令行(centos)
3.1 .bashrc
-
shell :能解释输入进终端的东西,并基于输入来运行命令的“壳”。
-
unix 操作系统下有很多不同的shell,bash 是我们最经常用的,也是最主流的一种。
-
每个用户目录下都会有个 ~/.bashrc 文件,用于定制终端配置和环境变量
-
当登录时,以及每次打开新的shell时,~/.bashrc被读取并应用.
-
如果想 .bashrc 更改立即生效
source ~/.bashrc
3.2 常用快捷键
-
清空屏幕
- clear
- ctr + l
-
历史命令
- history
- 上一条命令:上箭头 或者 ctr + p
- 下一条命令:下箭头 或者 ctr + n
-
移动
-
快捷键 移动 ctr + a 移动到行首 ctr + e 移动到行尾 ctr + b 向左移动一个字符 ctr + f 向右移动一个字符 option(alt) + b 向左移动一个单词 option(alt) + f 向右移动一个单词
-
-
删除
-
快捷键 删除动作 ctr + h 向左删除一个字符 ctr + u 向左删除到行首 ctr + k 向右删除到行尾 ctr + w 向左删除一个单词
-
3.3 常用命令
-
文件传输
-
开发机之间
-
nc (传输单文件,文件夹可以先打包/压缩)
-
接收:nc -l port > file_name
nc -l 9998 > test.txt
-
发送:nc ip port < file_name
nc 10.26.21.144 9998 < test.txt
-
快速查看本机ip
ifconfig | grep inet
-
-
-
mac 与 远程 开发机
- sz,rz (tmux 中不能用,需要临时退出)
-
文件同步
- wget + http 服务器
- rsync 服务器
-
wget :从指定的url 下载文件,
- -c 断点续传
- –limit-rate=30m 限速30m
- -O 输出到
wget -c --limit-rate=30m 10.26.21.144:6200/http_files/text_mining/text_similarity/text_sim_data.zip -O text_sim_data.zip
-
-
其他常用命令
-
命令 + --help;man + 命令;info + 命令 三种方式查看 shell 命令手册
-
du 显示目录、或文件占用的磁盘空间
du -h -d 1
-
df -h 查看各分区磁盘空间
-
free -h 查看内存状态
-
top/htop linux 进程监控
-
shuf 文件乱序
-
sort 文件内容排序
-
uniq uniq文件内容,需要配合 sort 使用
-
split 分割文件
-
…
-
四、tmux
推荐教程:
4.1 tmux 是什么
tmux 是一个终端复用工具
可以解决以下尴尬场景:
- 并行工作,想同时打开多个窗口工作。不用再重新打开个一个终端窗口 ssh 到服务器。
- 运行一个脚本,服务器断掉失联之后当前进程被服务器给无情地杀掉,不得不用 nohup 等方式让脚本在后台跑。
- 每次 ssh 到服务器都要重新切到工作目录,打开多个进程等,之前的工作记录会丢失。
- 鼠标是个伟大的发明,但不幸的是,开发者使用终端的时候,在鼠标和键盘之间来回移动和定位,不仅浪费时间,还可能会影响你的思路
4.2 tmux 可以做什么
- tmux可以开多个session,多个窗口,多个分屏。可以很方便的切换,互相之间也并不影响。
- tmux可以自动保存所有的窗口和session,掉线后可以重新打开, 完全复现掉线之前的工作状态。
- 安装:
sudo yum install tmux
4.3 tmux 个性化配置
- 在个人目录下新建tmux配置文件(不配置也可以调用tmux,会使用默认配置)
touch ~/.tmux.conf
- 建议将 tmux 前置键改为:ctr + j 或者 ctr + x 默认的 ctr + b 太难用了
- 配置内容可以参考:配置代码
这个配置文件最主要的变动是,把tmux默认的Prefix-Command前置快捷键 从 ctr + b 替换成了 ctr + x ,把键程缩短了。
4.4 tmux 常用命令
启动新会话:
tmux [new -s 会话名 -n 窗口名]
恢复会话:
tmux at [-t 会话名]
列出所有会话:
tmux ls
关闭会话:
tmux kill-session -t 会话名
关闭所有会话:
tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill
4.5 tmux 常用快捷建
进入tmux环境后,按下前置快捷建 ctr + x 后松开,再按以下快捷键:
1.会话:
:new<回车> 启动新会话
s 列出所有会话
$ 重命名当前会话
2.窗口:
c 创建新窗口
w 列出所有窗口
n 后一个窗口
p 前一个窗口
f 查找窗口
, 重命名当前窗口
& 关闭当前窗口
3.窗格(分屏)
% 垂直分割
" 水平分割
o 交换窗格
x 关闭窗格
⍽ 左边这个符号代表空格键 - 切换布局
q 显示每个窗格是第几个,当数字出现的时候按数字几就选中第几个窗格
{ 与上一个窗格交换位置
} 与下一个窗格交换位置
z 切换窗格最大化/最小化
4. 临时退出
ctr + d
4.6 登录自启动
如果想要登录服务器是,tmux 自动启动,登录时自动执行以下动作:
- 如果没有tmux session,自动创建
- 如果存在已有的工作session, 自动 attach
方法如下:
- 编辑 ~/.bashrc 文件,添加以下内容
# User specific aliases and functions
# 登陆自启动tmux
tmux_init()
{
tmux new-session -s "personal" -d -n "local" # 开启一个会话
tmux -2 attach-session -d # tmux -2强制启用256color,连接已开启的tmux
}
# 判断是否已有开启的tmux会话,没有则开启
if which tmux 2>&1 >/dev/null; then
test -z "$TMUX" && (tmux -2 attach || tmux_init)
fi
4.7 tmux 上传、下载文件
-
不要在tmux窗口中使用sz,rz
tmux不支持sz,rz传输文件,不然会直接卡死,目前还没有找到好的解决办法,欢迎补充。
-
只能用笨办法,前置键 & ctr + d 临时退出tmux,传完文件,再 tmux -2 at 回来
4.8 先登录tmux,再切换到共用账户,不要颠倒了
- tmux 是根据每个用户保存session 和窗口的,如果开发时存在多人共用的公共账户,应该先启动tmux,再切到公共账户。如果颠倒了,你就可以直播别人写代码了
五、vim
推荐书籍:vim实用技巧
这里仅列举最常用的vim 快捷键和技巧
5.1 why vim
相比IDE,vim的优势:
- 开发机上标配vim,而IDE 你只能本地mac用,不用同步代码。
- 熟悉vim快捷键、设计模式后,可以让书写跟上思维。
- vim摒弃了鼠标操作,双手基本不用离开键盘,不会因为鼠标、触控、键盘切换打断思维。
- vim 丰富的插件足以比肩IDE
5.2 提高效率的思想 --避免无意义的重复
如果一个操作要执行10次,宁愿第一次执行这个操作稍微复杂一点,也不机械、缓慢地重复这个操作多次。
1. 用好 “.” 命令
. 命令重复一次上次的修改
什么算是 “修改”
- 从进入insert到离开insert模式,整体算作一次修改
- dd,x 这些命令也都算修改
- hjkl 等移动不算修改
- 所有单纯查找移动的动作,都不算修改,. 不能复现
总结:所有涉及到从普通模式切换到插入模式的命令都可以用 “.” 复现
2. 使用简单的复合命令,减少无关的移动
例如:
复合命令 | 等效命令 | 执行动作 |
---|---|---|
A | $a | 移动到行尾并进入编辑模式 |
C | c$ | 删除到行尾,并进入编辑模式,并存入缓冲区,可以使用 p在制定位置插入 |
s | cl | 删除当前字符,并进入插入模式 |
S | ^c | 删除当前行(从缩进头到行尾)并进入编辑 |
I | ^i | 到行手首(缩进头)第一个字符并插入 |
O | ko | 在上面新建一行 |
o | A | 在下面新建一行 |
3. 执行、重复、回退 的模式
- 执行一个操作
- “.” 命令重复
- u 撤销上步操作(ctr + r 取消撤销)
5.3 vim 的几种模式
1、普通模式
普通模式中,有一系列的操作命令可以执行。理论上,使用vim时,你应该有相当长的时间处于这个状态,如果你大部分时间都处于插入状态,那么意味着你没有利用好vim。
vim 区分普通模式和插入模式的好处在于:
- 停顿时可以进行思考穿梭
- 可以把撤销的单元切成块,方便用户控制撤销粒度。(从插入到退出)
- 可以构造可重复的修改
- 普通模式下:操作符 + 命令范围 双剑合璧,十分强大
- 例如删除 一个单词命令: daw
要习惯在普通模式下:“操作命令 + 范围 ” 的快捷方式,非常强大
常用的vim的操作符命令
命令 | 用途 |
---|---|
c | 修改 |
d | 删除 |
y | 复制到寄存器 |
g~ | 反转大小写 |
gu | 转换为小写 |
gU | 转换为大写 |
> | 增加缩进 |
< | 减小缩进 |
常用的命令范围
-
文本范围
文本对象命令 选择范围 iw 当前单词 aw 当前单词及后面的空格 iW 当前字串 aW 当前字串及后面的空格 is 当前句子 as 当前句子及之后的空格 ip 当前段落 ap 当前段落及之后的空行 -
分割符文本对象范围
分隔符对象命令 范围区域 a( 或者 a) 或者 ab 小括号和其里面的内容 i( 或者 i) 或者 ib 小括号里的内容 a{ 或者 a} 或者 aB 大括号和其里面的内容 i{ 或者 i} 或者 iB 大括号里面的内容 a[ 或者 a] 中括号和其里面的内容 i[ 或者 i] 中括号里面的内容 a< 或者 a> 尖括号和其里面的内容 i< 或者 i> 尖括号里面的内容 a’ 或者 a’ 单引号和其里面的内容 i’ 或者 i’ 单引号里面的内容 a" 双引号和其里面的内容 i" 双引号里面的内容 a` 反引号和其里面的内容 i` 反引号里面的内容 at 一对xml 标签和里面的内容,例如 it 一对xml 里面的内容,例如 -
其他范围
范围命令 范围区域 G 到文件尾部 gg 到文件头
- 额外规则,操作符命令执行两次,默认作用于当前行,如dd
2、插入模式
插入模式仅用于输入,掌握在插入模式下可用的快捷键即可。
-
在插入模式下及时更正错误
-
删除快捷键集合, 与shell相同,注意ctr k 与shell不同
快捷键 左右 ctr + h 删除前一个字符 ctr + w 删除前一个单词 ctr + u 删除到行首(缩进头)
-
-
返回普通模式
- esc 或 ctr + [
3、可视模式
可视模式,分为三种:
快捷键 | 可视模式 |
---|---|
v | 字符可视模式 |
V | 行可视模式 |
ctr +v | 列可视模式 |
普通模式 VS 可视模式:
-
普通模式下,我们 是 “操作 + 范围”
-
而在可视模式下,我们是 “范围 + 操作”
在可视模式下,光标跳转指令 hjkl f ; 等命令都可用
- 选择高亮区域
- 不同模式之间按快捷键键切换
- 按快捷键两次返回普通模式
- esc返回普通模式
- o 键返回活动的端点,可以重新开始选择
- 列模式下, $ 可以把选区扩大到每行行尾, A就可以在每行行尾添加内容
- “.” 可以重复列、行模式操作,但是字符不要重复,容易出错
- “I”,“A” 在可视模式可用,“a” “i” 不可用 I 相当于i,A 相当于
4. 命令行模式
普通模式适合光标所在处小范围的操作,命令行模式适合距离较远的大范围的操作
- “:” 调出命令行模式,esc返回普通模式
- 可以在命令行下使用
1、行号做地址
:行号1,行号2 + 命令
-
删除 第15行到20行
:15,20d
-
删除第15行到当前行
:15,d
2、运行 shell 命令
- !+ shell 命令
- : shell 会启动一个交互式shell , exit 退出
- ctr z + fg 更加方便 fg(foreground)
3、打开另一个文件
-
在本窗口打开
:e file_name
:bn 切换下一个打开的文件
-
垂直分屏打开文件
:vs 文件路径/文件名 在新的垂直分屏中打开文件
-
水平分屏打开文件
:sv 文件路径/文件名 在新的水平分屏中打开文件
5.4 更快的移动
让手指一直保持在盲打手指键位上
1、基于单词的移动
命令 | 移动范围 |
---|---|
w | 向后移动到下一个单词的开头 |
b | 向前移动到当前单词/上一个单词的开头 |
e | 向后移动到当前单词/下一单词的结尾 |
ge | 向前移动到上一单词的结尾 |
- ea 命令连起来为, 在当前单词后插入, 要习惯成一个命令
- W、B、E都是基于“串”的移动,串以空白作为分割
- 单词和字串
- 单词:一个单词由字母和数字和下划线组成,单词之间以空白字符组成
- 字串:非空白字符序列
- 更快移动基于字串,更细粒度基于单词
2、基于行间查找的移动
行间查找命令 | 含义 |
---|---|
f{char} | 向右移动到{char}的所在位置 |
F{char} | 向左移动到{char}的所在位置 |
t{char} | 向右移动到{char}的所在位置 的前一个字符上 |
T{char} | 向左移动到{char}的所在位置 的后一个字符上 |
; | 重复前一次查找移动 |
, | 反向执行上一次的查找移动 |
-
删除命令 + 行间查找
d + 查找命令
-
替换插入 + 行间查找
c + 查找命令
这两个操作,可以 用 “.” 重复执行
5.5 强大的vim 插件
使用一系列vim 插件和配置,可以让vim打造地更像一个IDE环境。
之前写过两篇详细的笔记, 有时间会迁移过来