平常撸代码的时候不喜欢使用鼠标和触摸板,可能是比较懒吧(历史的倒退),手指懒得移动到鼠标,又或者感觉使用键盘快捷键要更快一些。 可能很多人感觉写代码不用鼠标是一件听着有点不可思议的事情,但是笔者平常如果是在终端下,确实是不用鼠标的。
下面介绍一些我在 macbook 下的一点使用经验,可以有效减少对鼠标的依赖,视频里会简单介绍一些这些工具或者配置的修改,感兴趣的可以自己折腾一下。
Alfred
Alfred 是 mac 下的一个神器,不过笔者其实用的非常基础,主要就是用来查找 app 和快速搜索打开文件。 比如随便搜一个软件的首字母,我们就可以通过它快速切到一个软件,而不需要用鼠标去点。 比如想打开 chrome,直接输入 chr 基本就可以找到然后回车一下就打开了。(Alfred会根据你的打开频率调整候选项顺序)
magnet 窗口调整
macbook 好像不支持窗口快速调整,使用这个小软件可以快速分割窗口,比如同时打开了 chrome 和iterm2,可以使用快捷键让他们快速占用左右半边屏幕。 (如果你有更好用的请评论区推荐,这个一直是笔者的一个小痛点)
键盘键位修改
笔者使用的 hhkb,就是这个键位设置比较变态的键盘。因为有些键位设计笔者用得不爽,网上搜索到一个改键神器 Karabiner-Elements 。 除了做一些基本的键位映射修改(比如你可以把左边的 capslock 修改成 ctrl 解放小指头),还可以通过 json 配置做一些比较复杂的修改,比如我把 command + c/v 复制粘贴改成了 right_command + n/p 方便我右手单手操作。 后边你会看到它的更多使用方式。一下是我的键位修改配置,你可以参考然后修改成自己需要的键位设置。
PegasusWang/linux_configgithub.com切换软件快捷键
在 macbook 下可以用 command + tab 来在软件之间切换,当然如果打开的软件比较多可能效率不高。但是如果是在频繁使用的两个软件之间切换效率就不错。 比如笔者写这篇博客的时候,刚打开了浏览器,就可以不断使用 command+tab 来换在我的iterm2 和 chrome 之间切换。
另外如果一个软件打开了多个窗口,还可以使用 commmand + ~
(这个macbook 笔记本键盘的左上角,hhkb 右上角的键)在这些窗口之间快速切换。这样也一定程度避免了使用鼠标。 这里笔者也修改了键位,把 right_option 修改成了 ~
,直接右手掌就可以压到这个按键。
iterm2 修改
iterm2 我做的修改就是使用 left_command + jk 来左右切换 tab。使用 command +, 打开设置,然后 keys-> key Bindings 增加绑定就好。 比如我增加的就是使用 command + jk 来切换 Previews Tag 和 Next Tab,这样切换窗口的时候用键盘就很快了。 left_command 和 right_command 在空格的左右两边,非常容易触碰。(我对键位的所有修改都希望手指不离开主键盘区域,从而快速操作)
vim(neovim) 修改
vim 平常我和喜欢分屏编辑,同时打开很多文件。vim 自带的切换窗口使用的是 ctrl + w + hjkl,这个非常不喜欢。所以我改成了 使用 ctrl + hjkl 来进行窗口切换。因为是在终端下使用 neovim 打字,所以一般来说也无需鼠标。 使用 ctrl+hjkl 来切换窗口之后可以有效提升切换速度。
" (.vimrc) use ctrl+h/j/k/l switch window
noremap <C-h> <C-w>h
noremap <C-j> <C-w>j
noremap <C-k> <C-w>k
noremap <C-l> <C-w>l
tmux 修改
tmux 也是笔者平常使用很多的一个工具,但是默认的切换窗口的快捷键也不太喜欢,就修改成了 command + wasd。 之前还在用 windows 的时候,经常玩游戏喜欢使用 wasd 控制方向,所以也比较习惯这个键位。
# Use Alt-arrow keys without prefix key to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# use shift + up/down switch window
bind -n S-Up previous-window
bind -n S-Down next-window
我先是用 tmux.conf 的配置修改成了 left_option + 方向,但是我键盘没有方向键啊,于是我又使用了上边提到的改键工具, 把 right_command+wasd 分别映射到 left_option + 方向 切换窗格(pane)了。而且切换窗口使用 ctrl+b+ n/p 也不好用,我索性也改成了 right_command + jk。
on-my-zsh 修改
这里我用了 oh-my-zsh 的 vi-mode 插件,只需要按一下 Esc 好家伙又可以用 vim 的方式来操作命令了,这个我就非常熟悉了。 vim 大部分 normal 命令都可以用,可以很快地修改命令行了。改完之后同样 vim 的方式进入插入模式,回车执行命令。
chrome 插件 vimium
作为一个 web 后端 crud boy,目前写 python 和 golang 居多。终端下虽然可以摆脱鼠标,但是进入浏览器之后还是没辙了。 使用了 vimium 或者类似插件之后,可以用 vim 的方式操作浏览器,同样可以一定程度上摆脱鼠标(之前笔者有视频介绍过 vimium)。
有时候浏览器之下还是偶尔用到方向,我依旧使用 right_command+wasd 来控制方向,手指不离主键盘区。
注意:这里改键工具 Karabiner-Elements json 配置里是可以限定 app 的,所以刚才我只在 iterm2 下使用 right_command + wasd切换 tmux 窗口,并不会冲突。你可以让同样的组合键在不同的 app 下发挥不同的作用,强大。
readline 快捷键
mac/linux 下一些软件都是用了 readline (行编辑库),所以你可以用非常多类似快捷键来进行操作。 当然终端下你也可以用刚才提到的 oh-my-zsh 插件 vi-mode.
小结
以上是笔者日常开发的一些小技巧,如果你有一些非常好用的技巧或者软件可以留言分享。