使用vim+tmux+zsh+autojump提升效率

Unix was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.

如果你是用mac或者linux,这些工具的配合能大幅提高工作(装逼)效率(并且在服务器上也能用),本文不打算具体介绍安装方式,请自行google,主要介绍下vim一些好用的插件,说实话,真正感觉vim好用是因为github上很多牛人写的好用的插件。(当然如果你用IDE我强烈推荐Pycharm, 其实编辑器用不好反而容易写出烂代码,还是推荐不想折腾的用PyCharm,最好用的python开发工具,pycharm+vim插件也比较爽)。无论用什么工具,首要目的都是提升开发效率。


vim小Tips

  • 更改键盘设置映射capslock到ctrl,ctrl使用非常频繁
  • 使用ctrl+[ 或者 ctr+c 代替 Esc
  • vimrc中加入两行inoremap <c-l> <c-o>:w<cr>nnoremap <c-l> :w<cr> 保存文件,再也不用每次都使用:w了,insert和normal模式下都可以用
  • Chrome安装vimium可以在浏览器里使用vim命令浏览网页
  • 高亮当前选中单词,写代码的时候高亮选中的相同单词,方便查找引用。F3激活
1
2
autocmd CursorMoved * exe exists("HlUnderCursor")?HlUnderCursor?printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')):'match none':""
nnoremap <silent> <F3> :exe "let HlUnderCursor=exists(\"HlUnderCursor\")?HlUnderCursor*-1+1:1"<CR>

如何安装插件

set nocompatible              " required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required, 如果有新的插件,直接把名称放到这里
Plugin 'gmarik/Vundle.vim'

" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)


" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
  • 进入vi执行:BundleInstall就可以了

vim插件之-代码篇

  • Bundle ‘klen/python-mode’,拥有python几乎所有IDE的功能,吐血推荐 ,杀手级python插件
  • Plugin ‘jmcantrell/vim-virtualenv’,虚拟环境python支持
  • Plugin ‘pangloss/vim-javascript’, js支持
  • Bundle ‘mattn/emmet-vim’, 书写html和css,前端支持
  • Bundle ‘SirVer/ultisnips’和 Plugin ‘honza/vim-snippets’, 代码片段补全
  • Bundle ‘scrooloose/syntastic’, 支持各种流行编程语言的语法检测
  • Bundle ‘majutsushi/tagbar’,支持大纲浏览
  • Plugin ‘tpope/vim-fugitive’, git支持,直接在vim中执行git命令。一个特别方便的命令就是:Gblame,可以看到每一行代码是谁在啥时候提交的(有问题能直接找他问)。
  • Plugin ‘Valloric/YouCompleteMe’, 支持c/c++/python/go等流行编程语言的代码补全
  • Bundle ‘scrooloose/nerdcommenter’,快速注释,支持几乎所有编程语言

到此为止你就已经有了一个python全栈开发IDE了,并且这套配置用ssh登录到服务器上也可以愉快地写代码了,笔者经常因为本地有些服务不好配置直接ssh到服务器写代码。


vim插件之-移动篇

  • Plugin ‘easymotion/vim-easymotion’, 快速移动插件, ‘,,w’可以在单词上出现前缀,然后快速跳转
  • Plugin ‘haya14busa/incsearch.vim’
  • Plugin ‘haya14busa/incsearch-fuzzy.vim’,模糊搜索,自带搜索比较弱,这个模糊搜索很快速

vim插件之-文件浏览

  • Bundle ‘scrooloose/nerdtree’, 在vim里文件树浏览
  • Bundle ‘kien/ctrlp.vim’, 必备神器之一, 快速文件搜索和跳转,支持mru搜索,基本就可以放弃文件树了

vim插件之-外观篇

  • Plugin ‘yggdroot/indentline’, 缩进线条,可以set cursorline加上水平线条,python里这个还是很必要的
  • Plugin ‘mhinz/vim-startify’, 启动的时候显示一些编程相关的名言警句和最近打开文件,很有意思
  • Plugin ‘bling/vim-airline’ 和 Plugin ‘vim-airline/vim-airline, 底下的文件信息提示行,彩虹效果
  • Plugin ‘kien/rainbowparentheses.vim’,彩虹括号,让嵌套括号容易分辨,花里胡哨的^^
    提示,如果airline在tmux中的vim不能用,在你的bashrc或者zshrc中加入export TERM="xterm-256color"

目前为止你就已经有了一个轻量而又炫酷的vim开发环境了,从此不再羡慕任何IDE,一套vimrc配置走天下。happy coding,在服务器上也可以直接写代码了。在本地开发的话如果机器好可以用pycharm+vim插件。
vim效果图
vim+tmux+python+tdd


使用tmux

  • 终端复用
  • 分屏神器
  • 后台进程托管
  • 最近在youtube上看到,不同的人attach到同一个session还可以用来结对编程,相当基情

vim+tmux工作流几乎可以在写代码的时候完全脱离鼠标。笔者目前写代码基本上都是 ssh 到服务器上,每个项目开个 tmux 相当于一个工作区,每个区域下开多个窗口,一些窗口用来查看 git,一些窗口调试或者运行测试等,一个全屏窗口打开 vim 编辑。


on-my-zsh


autojump

autojump
这玩意跳转到目录相当方便,各种模糊匹配,大大节省了你来回cd到各种目录的时间。


让ubuntu vim支持python3

直接拷贝下边命令到终端,喝杯茶,之后在vimrc里边
let g:pymode_python = 'python3'

1
2
3
4
5
6
7
8
sudo apt-get build-dep vim
cd /tmp && git clone https://github.com/vim/vim.git && cd vim
./configure --with-features=huge --enable-multibyte --enable-python3interp \
--enable-gui=gtk-2 --prefix=/usr
make VIMRUNTIMEDIR=/usr/share/vim/vim74
sudo make install
alias vi='vim'

掌握以上工具基本就能在终端里游刃有余了,至于editor你随便选个趁手的就行,很多时间还是要花在editor上的。附录有关于mac上各种开发环境的配置参考,感兴趣可以看看。


Ref:

终极Shell

autojump

vim-python天作之合

vimawesome,更多插件等你探索

文本三巨头:zsh、tmux 和 vim

linux_config我的vim配置

http://sourabhbajaj.com/mac-setup/

https://github.com/donnemartin/dev-setup

https://github.com/nicolashery/mac-dev-setup

vim cheet sheet