vim+tmux+terminal常用配置

由于本人使用的是mac,所以一些配置可能与linux不同

安装Vim

如果是linux
yum update -y
yum install vim -y
如果是mac
brew install vim

安装Vundle

我们采用vundle安装插件,这样比较方便,如果~/.vim/bundle目录没有,自行创建即可

我们把vundle放到.vim/bundle/下面

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

配置~/.vimrc

如下是我自己的配置,复制粘贴即可,如果没有该文件,也是自行创建即可

set nocompatible " be iMproved

" 搜索逐字符高亮
set hlsearch
set path+=**
set wildmenu
" leader 键
let mapleader = ','
"配置backspace键工作方式
set backspace=indent,eol,start
"搜索时,关键字高亮
set hls
"设置在Vim中可以使用鼠标 防止在Linux终端下无法拷贝
set mouse=a
" 复制粘贴到系统剪贴板
map <C-C> "+y<CR>
map <C-V> "+p<CR>
" 快速扩大分屏
map <C-M> :res +2<CR>
map <C-N> :vertical res +2<CR>
" 窗口缩放
"set modifiable
"设置ctags的快捷键为 Ctrl-F12  
map <F10> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>    
"显示行号
set number
"设置在编辑过程中右下角显示光标的行列信息
set ruler
"当一行文字很长时取消换行
"set nowrap
"在状态栏显示正在输入的命令
set showcmd
"设置历史记录条数
set history=1000
"设置取消备份 禁止临时文件生成
set nobackup
set noswapfile
"突出现实当前行列
set cursorline
"set cursorcolumn
"设置匹配模式 类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
"设置C/C++方式自动对齐
set autoindent
set cindent
"开启语法高亮功能
syntax enable
syntax on
"设置搜索时忽略大小写
set ignorecase
"设置Tab宽度
set tabstop=2
"设置自动对齐空格数
set shiftwidth=2
"设置按退格键时可以一次删除4个空格
set softtabstop=4
set smarttab
"将Tab键自动转换成空格 真正需要Tab键时使用[Ctrl + V + Tab]
set expandtab
"设置编码方式
set encoding=utf-8
""自动判断编码时 依次尝试一下编码
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"检测文件类型
filetype on
"针对不同的文件采用不同的缩进方式
filetype indent on
"允许插件
filetype plugin on
"启动智能补全
filetype plugin indent on

filetype off " required! /** 从这行开始,vimrc配置 **/

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()
Plugin 'VundleVim/Vundle.vim'

Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'tpope/vim-rails.git'
Bundle 'L9'

"NerdTree 
Bundle 'scrooloose/nerdtree'
let NERDTreeWinPos='left'
let NERDTreeShowBookmarks=1
let NERDTreeWinSize=31
let NERDTreeChDirMode=1
map <C-Y> :NERDTreeToggle<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") &&  b:NERDTreeType == "primary") | q | endif


" nerdtree-git-plugin
Bundle 'Xuyuanp/nerdtree-git-plugin'
let g:NERDTreeIndicatorMapCustom = {
      \ "Modified"  : "✹",
      \ "Staged"    : "✚",
      \ "Untracked" : "✭",
      \ "Renamed"   : "➜",
      \ "Unmerged"  : "═",
      \ "Deleted"   : "✖",
      \ "Dirty"     : "✗",
      \ "Clean"     : "✔︎",
      \ "Unknown"   : "?"
      \ }

" TagBar  use <F3>
Bundle 'majutsushi/tagbar'
let g:tagbar_ctags_bin='ctags'          "ctags程序的路径
let g:tagbar_width=35                   "窗口宽度的设置
"let g:tagbar_left=1                     "居左
let g:tagbar_right=1                     "居左
let g:tagbar_type_ruby = {
      \ 'kinds' : [
      \ 'm:modules',
      \ 'c:classes',
      \ 'd:describes',
      \ 'C:contexts',
      \ 'f:methods',
      \ 'F:singleton methods'
      \ ]
      \ }
map <C-I> :Tagbar<CR>

" 增强状态栏
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'git://github.com/edkolev/tmuxline.vim.git'
set laststatus=2
let g:airline#extensions#tabline#enabled=1
let g:airline#extensions#whitespace#enabled=0
let g:airline_powerline_fonts = 1
"let g:airline_theme='ayu_mirage'
let g:airline_theme='dark'

map <C-H> :bp<CR>
map <C-L> :bn<CR>
map <C-B> :ls<CR>

Bundle 'scrooloose/nerdcommenter'
Bundle 'kien/ctrlp.vim.git'
Bundle 'dkprice/vim-easygrep.git'
Bundle 'git://github.com/tpope/vim-endwise.git'

"ctrlp
"<Leader>p搜索当前目录下文件
let g:ctrlp_map = '<Leader>p'
let g:ctrlp_cmd = 'CtrlP'
"<Leader>f搜索MRU文件
nmap <Leader>f :CtrlPMRUFiles<CR>
"<Leader>b显示缓冲区文件,并可通过序号进行跳转
nmap <Leader>b :CtrlPBuffer<CR>
"设置搜索时忽略的文件
let g:ctrlp_custom_ignore = {
      \ 'dir':  '\v[\/]\.(git|hg|svn|rvm)$',
      \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc)$',
      \ }
let g:ctrlp_working_path_mode = 0
let g:ctrlp_match_window_bottom = 1
"修改QuickFix窗口显示的最大条目数
let g:ctrlp_max_height = 15
let g:ctrlp_match_window_reversed = 1
"设置MRU最大条目数为20
let g:ctrlp_mruf_max = 20
let g:ctrlp_follow_symlinks = 1
"默认使用全路径搜索,置1后按文件名搜索,准确率会有所提高,可以用<C-d>进行切换
let g:ctrlp_by_filename = 0
"默认不使用正则表达式,置1改为默认使用正则表达式,可以用<C-r>进行切换
let g:ctrlp_regexp = 0
"自定义搜索列表的提示符
let g:ctrlp_line_prefix = '♪ '

let g:EasyGrepMode = 2     " All:0, Open Buffers:1, TrackExt:2, 
let g:EasyGrepCommand = 0  " Use vimgrep:0, grepprg:1
let g:EasyGrepRecursive  = 1 " Recursive searching
let g:EasyGrepIgnoreCase = 1 " not ignorecase:0
let g:EasyGrepFilesToExclude = "tags"
let g:EasyGrepFilesToExclude = "*.bak"
let g:EasyGrepFilesToExclude = "*~"
let g:EasyGrepFilesToExclude = "cscope.*"
let g:EasyGrepFilesToExclude = "*.a"
let g:EasyGrepFilesToExclude = "*.o"
let g:EasyGrepFilesToExclude = "*.pyc"
let g:EasyGrepFilesToExclude = "*.log"

" 缩进线条
Plugin 'Yggdroot/indentLine'
"let g:indentLine_showFirstIndentLevel = 1
"let g:indentLine_setColors = 0

Plugin 'SuperTab'
let g:SuperTabRetainCompletionType=2

" 主题插件
Plugin 'git://github.com/tomasr/molokai.git'
"molokai 主题 monokai的进化版
set t_Co=256
colorscheme molokai
let g:molokai_original = 1
let g:rehash256 = 1

Plugin 'Chiel92/vim-autoformat'
noremap <C-F> :Autoformat<CR>

" rspec插件
Plugin 'thoughtbot/vim-rspec'
map <Leader>t :call RunCurrentSpecFile()<CR>
map <Leader>s :call RunNearestSpec()<CR>
map <Leader>l :call RunLastSpec()<CR>
map <Leader>a :call RunAllSpecs()<CR>
let g:rspec_runner = "os_x_iterm2"

call vundle#end()
filetype plugin indent on " required! /** vimrc文件配置结束 **/

安装插件

vim # 随便一个地方打开vim
:PluginInstall # 安装插件
插件安装

配色文件放入~/.vim/colors(这里采用molokai)

配色文件需要放在.vim/colors下面

cp -rf ~/.vim/bundle/molokai/colors ~/.vim/

当前效果

配色方案也可以选择自己喜欢的下载,github上很多

这是一张老图,实际结果有出入

安装PowerLineFonts字体

因为我们用的状态栏插件是带有箭头符号的,但是需要安装powerline字体才能显示出来

直接去github下载下来安装
https://github.com/powerline/fonts

(顺便安利一下)因为我在vim装了molokai主题,为了颜色统一,我也在terminal安装了molokai主题,如果有兴趣,可以去装一个terminal的主题配色

https://github.com/lysyi3m/osx-terminal-themes

安装完之后,在terminal设置中,启用我们安装的字体和主题

terminal设置

重新打开vim,目前的效果

箭头可以显示
terminal

这里的terminal不仅采用了molokai配色,还使用了ZSH,如果切换到ZSH,可以看看这里Mac下采用zsh代替bash

以上就是terminal+vim的设置了

tmux 设置

 安装
 brew install tmux
  • 很多时候,我们需要在terminal中实现分屏
  • tmux 允许随时随地断开或重新接入会话(Session)

关于tmux更多的使用,可以去网上科普一下,这里只给出如何配置

tmux的配置就是一个 ~/.tmux.conf文件,如果没有需要自行创建

# 解除默认前缀
unbind C-b
# 设置自定义前缀
set -g prefix C-a
# 采用vim的操作方式
setw -g mode-keys vi
# 窗口序号从1开始计数
set -g base-index 1
# 开启鼠标模式
set-option -g mouse on

# 通过前缀+KJHL快速切换pane
#up
bind-key k select-pane -U
#down
bind-key j select-pane -D
#left
bind-key h select-pane -L
#right
bind-key l select-pane -R

# panes 分割线颜色
set -g pane-border-bg colour236
set -g pane-border-fg colour236
set -g pane-active-border-bg colour232
set -g pane-active-border-fg colour232

以上是我目前使用的配置,同样为了与vim的颜色统一,在vim的插件中,我采用了tmuxline.vim这样一个插件,它可以让tmux的状态栏跟vim主题颜色一致,因为在上面我们已经装了这个插件,所以不用再装了

这里是vim插件影响了tmux,而不是一个tmux插件

tmux状态栏效果

WechatIMG155.jpeg

配置中涉及的部分快捷键(部分快捷键在配置中未开启,如果需要可以取消注释)只随便列出部分,更多的请从网上查资料学习

本人一直使用Mac,对Windows键盘不熟悉,以Mac上的快捷键组合列出(应该和windows差不多,大家可以对照以下)

# 左侧目录树
ctrl + y # 在目录树窗口按大写R,可以刷新目录树

# 右侧函数树
ctrl + i

# Buffer左右切换
ctrl + h # 向左移动
ctrl + l # 向右移动

# ctags生成
F10

# 自动补全,插件中没有使用专门的补全插件,全是用的ctags
ctrl + p 或 tab # insert 状态下 【由于装了superTab,也可以直接tab键补全】

# 文件查找
ctrl + p # normal 状态下 【当前目录全局】
ctrl + f # 【从最近搜索的文件中查找】
ctrl + b # 从当前buffer中查找

# 模糊搜索
:Grep xxxx # normal 状态下,我们leader键已经改为了“,”【逗号】
或者光标移到一个需要搜索的单词上,按 ,vv

# 替换
:Replace xxxx yyyy # normal 状态下

# 跳转到函数定义处
光标移到需要跳转的单词上,按下 ctrl + ] # 需要先生成 ctags 文件
回到跳转前位置,按下 ctrl + t

# 关闭当前buffer
:bd

# 复制到系统剪贴板
ctrl + c
# 从系统剪贴板粘贴
ctrl + v

# 垂直分屏
ctrl + w + v
# 水平分屏
ctrl + w + s
# 关闭分屏
ctrl + w + c

# 水平快速扩大分屏
ctrl + n
# 垂直快速扩大分屏
ctrl + m

# easymotion的使用,我们leader键已经改为了“,”【逗号】
,,s + 关键字

# 更多详细配置大家可以自行阅读配置文件,或者根据自己需要更改配置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 写在前面 1. 为什么要用vim 如果一定要讲一个清新脱俗的理由,那是因为用vim对颈椎和腰椎好(严肃脸)。使用v...
    写bug的猫阅读 7,447评论 0 32
  • 真实有效的Vim配置记录(macOS) 以前在Ubuntu里配置了两次Vim,macOS中配置了一次,都没有配置成...
    染微言阅读 11,428评论 0 8
  • macvim配置 最终效果如下: 系统环境 macos10.12.4 homebrew1.2.1 python3....
    Like_eb56阅读 69,246评论 5 65
  • 每天一百多人的门诊工作量,对于出门诊的医生就是折磨,看病要麻利,询问病史要简要击中要害,不让病人集堆,下班时...
    慈桉阅读 364评论 0 1
  • 昨天同事问我毕业这么多年没攒下钱呢?我想了想,毕业第一年就给我弟买了手机,他大学毕业没考上研究生就我每个月给他10...
    Anna娜阅读 92评论 0 0