效果
VIM
最开始的想法是最简配置实现最高效的使用。 前几年基本只用了2个插件NERDTree
,BufferExplorer
。最近觉得是时候给它“升级”一下了,但尽量精简,使用频率不高的功能还是没有必要通过插件搞。
主要增加:
- Vundle。 插件管理。插件一多还是用她管理方便一些,主要是升级、部署新的开发环境是都更加方便。
- ack。 一直用rgrep, 但是身边同事都推荐ack, 试了下起码没有比原来差。
- vim-airline。 多功能statusline,不仅漂亮了一点点,还有很多方便的提示,比如git分支、光标所在位置方法名、文件编码、光标位置百分比,末尾空格提示等等。
几个有用的配置
-
set list listchars=tab:→\ ,trail:·
显示空格和tab。 -
set hlsearch incsearch smartcase ignorecase
搜索增强,忽略大小写匹配,从同事在服务器上的配置学到的。 cmap w!! w !sudo tee % > /dev/null
老是忘记sudo vim
又记不住tee怎么用,保存没有写权限的文件,干脆写到vim配置得了。ctrlp搜索太慢,这样忽略掉不需要的目录和权限即可。
let g:ctrlp_custom_ignore = {
\ 'dir': 'vendor/bundle/*\|vendor/cache/*\|public\|spec',
\ 'file': '\v\.(exe|so|dll|swp|log|jpg|png|json)$',
\ }
-
autocmd FileType go,c,java,sh set ts=4 sw=4 sts=4 et
c,java 等代码用4个空格缩进。 -
autocmd BufNewFile,BufRead *.json set filetype=javascript
打开json时,用javascript的语法进行高亮显示。 - 使用airline后,nerdtree不显示工作目录问题。
~/.vim/bundle/vim-airline/autoload/airline/extensions.vim:23
改为'nerdtree': [ '%{exists("b:NERDTreeRoot")?b:NERDTreeRoot.path.str():""}', '' ],
让NERDTree的status line继续显示当前工作目录,尤其是有时需要打开多个不同项目的vim时,这个提示很有用。
tmux
服务器上保持会话、恢复会话非常好用的工具,其实很多人也用来做终端的窗口管理,而且比起tab来说操作更舒服一些。配置也可以更自由
-
setw -g mode-keys vi
tmux中翻页复制时,用vim的快捷键。 - 打开新的window或者分屏时,当前目录默认为新建window或者分屏前所处的目录。
bind s split-window -h -c "#{pane_current_path}"
bind v split-window -v -c "#{pane_current_path}"
bind-key c new-window -c "#{pane_current_path}"
-
set -g base-index 1
如果觉得tmux状态栏的名字从0编号不习惯的话可以设置从1开始。 -
set -g history-limit 5000
跟终端的历史行数一个意思,设置大一些方便回查。 -
bind-key a send-prefix
默认情况终端都是emacs快捷键,比如ctrl r
找历史操作命令、ctrl p
上一条命令、ctrl n
下一条命令、ctrl e
光标到行尾、ctrl a
到行首,但是如果tmux的prefix是C-a
的话,这条配置可以通过ctrl+a a
移动光标到行首。 -
set -g status-justify centre
状态栏中间显示window的名字。