当前位置:   article > 正文

自用的Vim基础配置_vim airline buffer

vim airline buffer

 个人工作中,经常要在Linux中打开编辑部分文件,而vim是个不错的工具,无论是在桌面上还是ssh客户端中都可用,因此配置一个简易界面方便修改文件是必要的,下面是vim的一部分建议设置,方便日常修改文件和写一些小的测试代码。

两份配置文件都是使用VundleVim进行插件管理, 因此需要先执行:

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

然后再添加下面配置保存, 再在Vim中执行PluginInstall即可.

  1. "==================================
  2. "" Vim基本配置
  3. "===================================
  4. "关闭vi的一致性模式 避免以前版本的一些Bug和局限
  5. set nocompatible
  6. "配置backspace键工作方式
  7. set backspace=indent,eol,start
  8. "显示行号
  9. set number
  10. "设置在编辑过程中右下角显示光标的行列信息
  11. set ruler
  12. "当一行文字很长时取消换行
  13. "set nowrap
  14. "在状态栏显示正在输入的命令
  15. set showcmd
  16. "设置历史记录条数
  17. set history=1000
  18. "设置取消备份 禁止临时文件生成
  19. set nobackup
  20. set noswapfile
  21. "突出现实当前行列
  22. set cursorline
  23. "set cursorcolumn
  24. "设置匹配模式 类似当输入一个左括号时会匹配相应的那个右括号
  25. set showmatch
  26. "设置C/C++方式自动对齐
  27. set autoindent
  28. set cindent
  29. "开启语法高亮功能
  30. syntax enable
  31. syntax on
  32. "指定配色方案为256色
  33. set t_Co=256
  34. "设置搜索时忽略大小写
  35. set ignorecase
  36. "设置在Vim中可以使用鼠标 防止在Linux终端下无法拷贝
  37. set mouse=a
  38. "设置Tab宽度
  39. set tabstop=4
  40. "设置自动对齐空格数
  41. set shiftwidth=4
  42. "设置按退格键时可以一次删除4个空格
  43. set softtabstop=4
  44. "设置按退格键时可以一次删除4个空格
  45. set smarttab
  46. "将Tab键自动转换成空格 真正需要Tab键时使用[Ctrl + V + Tab]
  47. set expandtab
  48. "设置自动缩进开关,进入粘贴模式,方便粘贴代码测试
  49. set pastetoggle=<F9>
  50. "设置编码方式
  51. set encoding=utf-8
  52. "自动判断编码时 依次尝试一下编码
  53. set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
  54. "设置换行符为unix
  55. set ff=unix
  56. "检测文件类型
  57. filetype on
  58. "针对不同的文件采用不同的缩进方式
  59. filetype indent on
  60. "允许插件
  61. filetype plugin on
  62. "启动智能补全
  63. filetype plugin indent on
  64. "Vundle 配置
  65. filetype off
  66. set rtp+=~/.vim/bundle/Vundle.vim
  67. call vundle#begin()
  68. "vim插件根据需要选择
  69. Plugin 'VundleVim/Vundle.vim'
  70. "vim 主题
  71. Plugin 'tomasr/molokai'
  72. "vim 编辑器中的文件系统浏览器
  73. Plugin 'scrooloose/nerdtree'
  74. "在nerdtree中显示文件git状态
  75. Plugin 'Xuyuanp/nerdtree-git-plugin'
  76. "vim 扩展状态栏 及 airline主题
  77. Plugin 'vim-airline/vim-airline'
  78. Plugin 'vim-airline/vim-airline-themes'
  79. "JS & HTML 辅助插件,帮助快速输入,类似于emmet
  80. "Plugin 'mattn/emmet-vim'
  81. "js语法支持
  82. "Plugin 'jelera/vim-javascript-syntax'
  83. "Color scheme
  84. Plugin 'trusktr/seti.vim'
  85. "sublime类似多行操作插件
  86. Plugin 'terryma/vim-multiple-cursors'
  87. call vundle#end()
  88. filetype plugin indent on
  89. :map <C-b> :NERDTree<CR>
  90. let g:NERDTreeDirArrowExpandable = '>'
  91. let g:NERDTreeDirArrowCollapsible = 'v'
  92. let g:airline#extensions#tabline#enabled = 1
  93. let g:airline#extensions#tabline#buffer_nr_show = 1
  94. let g:airline_theme='molokai'
  95. set background=light
  96. colorscheme molokai

另一个更复杂的配置:

  1. set nocompatible
  2. filetype on
  3. set rtp+=~/.vim/bundle/Vundle.vim
  4. call vundle#begin()
  5. " 这里根据自己需要的插件来设置,以下是我的配置 "
  6. "
  7. " YouCompleteMe:语句补全插件
  8. set runtimepath+=~/.vim/bundle/YouCompleteMe
  9. autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口"
  10. let g:ycm_collect_identifiers_from_tags_files = 1 " 开启 YCM基于标签引擎
  11. let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全
  12. let g:syntastic_ignore_files=[".*\.py$"]
  13. let g:ycm_seed_identifiers_with_syntax = 1 " 语法关键字补全
  14. let g:ycm_complete_in_comments = 1
  15. let g:ycm_confirm_extra_conf = 0 " 关闭加载.ycm_extra_conf.py提示
  16. let g:ycm_key_list_select_completion = ['<c-n>', '<Down>'] " 映射按键,没有这个会拦截掉tab, 导致其他插件的tab不能用.
  17. let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
  18. let g:ycm_complete_in_comments = 1 " 在注释输入中也能补全
  19. let g:ycm_complete_in_strings = 1 " 在字符串输入中也能补全
  20. let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全
  21. let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
  22. let g:ycm_show_diagnostics_ui = 0 " 禁用语法检查
  23. inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" " 回车即选中当前项
  24. nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处
  25. let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项
  26. "
  27. " github 仓库中的插件 "
  28. Plugin 'VundleVim/Vundle.vim'
  29. Plugin 'vim-airline/vim-airline'
  30. "vim-airline配置:优化vim界面"
  31. let g:airline#extensions#tabline#enabled = 1
  32. " airline设置
  33. " 显示颜色
  34. set t_Co=256
  35. set laststatus=2
  36. " 使用powerline打过补丁的字体
  37. let g:airline_powerline_fonts = 1
  38. " 开启tabline
  39. let g:airline#extensions#tabline#enabled = 1
  40. " tabline中当前buffer两端的分隔字符
  41. let g:airline#extensions#tabline#left_sep = ' '
  42. " tabline中未激活buffer两端的分隔字符
  43. let g:airline#extensions#tabline#left_alt_sep = ' '
  44. " tabline中buffer显示编号
  45. let g:airline#extensions#tabline#buffer_nr_show = 1
  46. " 映射切换buffer的键位
  47. nnoremap [b :bp<CR>
  48. nnoremap ]b :bn<CR>
  49. " 映射<leader>num到num buffer
  50. map <leader>1 :b 1<CR>
  51. map <leader>2 :b 2<CR>
  52. map <leader>3 :b 3<CR>
  53. map <leader>4 :b 4<CR>
  54. map <leader>5 :b 5<CR>
  55. map <leader>6 :b 6<CR>
  56. map <leader>7 :b 7<CR>
  57. map <leader>8 :b 8<CR>
  58. map <leader>9 :b 9<CR>
  59. " vim-scripts 中的插件 "
  60. Plugin 'taglist.vim'
  61. "ctags 配置:F3快捷键显示程序中的各种tags,包括变量和函数等。
  62. map <F3> :TlistToggle<CR>
  63. let Tlist_Use_Right_Window=1
  64. let Tlist_Show_One_File=1
  65. let Tlist_Exit_OnlyWindow=1
  66. let Tlist_WinWidt=25
  67. Plugin 'The-NERD-tree'
  68. "NERDTree 配置:F2快捷键显示当前目录树
  69. map <F2> :NERDTreeToggle<CR>
  70. let NERDTreeWinSize=25
  71. Plugin 'indentLine.vim'
  72. Plugin 'delimitMate.vim'
  73. " 非 github 仓库的插件"
  74. " Plugin 'git://git.wincent.com/command-t.git'
  75. " 本地仓库的插件 "
  76. call vundle#end()
  77. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  78. """""新文件标题
  79. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  80. "新建.c,.h,.sh,.java文件,自动插入文件头
  81. autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
  82. ""定义函数SetTitle,自动插入文件头
  83. func SetTitle()
  84. "如果文件类型为.sh文件
  85. if &filetype == 'sh'
  86. call setline(1, "##########################################################################")
  87. call append(line("."), "# File Name: ".expand("%"))
  88. call append(line(".")+1, "# Author: ")
  89. call append(line(".")+2, "# mail: ")
  90. call append(line(".")+3, "# Created Time: ".strftime("%c"))
  91. call append(line(".")+4, "#########################################################################")
  92. call append(line(".")+5, "#!/bin/zsh")
  93. call append(line(".")+6, "PATH=/home/edison/bin:/home/edison/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/work/tools/gcc-3.4.5-glibc-2.3.6/bin")
  94. call append(line(".")+7, "export PATH")
  95. call append(line(".")+8, "")
  96. else
  97. call setline(1, "/*************************************************************************")
  98. call append(line("."), " > File Name: ".expand("%"))
  99. call append(line(".")+1, " > Author: ")
  100. call append(line(".")+2, " > Mail: ")
  101. call append(line(".")+3, " > Created Time: ".strftime("%c"))
  102. call append(line(".")+4, " ************************************************************************/")
  103. call append(line(".")+5, "")
  104. endif
  105. if &filetype == 'cpp'
  106. call append(line(".")+6, "#include<iostream>")
  107. call append(line(".")+7, "using namespace std;")
  108. call append(line(".")+8, "")
  109. endif
  110. if &filetype == 'c'
  111. call append(line(".")+6, "#include<stdio.h>")
  112. call append(line(".")+7, "#include<string.h>")
  113. call append(line(".")+8, "#include<stdlib.h>")
  114. call append(line(".")+9, "#include<time.h>")
  115. call append(line(".")+10, "")
  116. endif
  117. " if &filetype == 'java'
  118. " call append(line(".")+6,"public class ".expand("%"))
  119. " call append(line(".")+7,"")
  120. " endif
  121. "新建文件后,自动定位到文件末尾
  122. autocmd BufNewFile * normal G
  123. endfunc
  124. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  125. "键盘命令
  126. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  127. nmap <leader>w :w!<cr>
  128. nmap <leader>f :find<cr>
  129. " 映射全选+复制 ctrl+a
  130. map <C-A> ggVGY
  131. map! <C-A> <Esc>ggVGY
  132. map <F12> gg=G
  133. " 选中状态下 Ctrl+c 复制
  134. vmap <C-c> "+y
  135. "设置自动缩进开关,进入粘贴模式,方便粘贴代码测试
  136. set pastetoggle=<F9>
  137. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  138. ""实用设置
  139. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  140. set tags=./tags
  141. " 设置当文件被改动时自动载入
  142. set autoread
  143. " quickfix模式
  144. autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
  145. "代码补全
  146. set completeopt=preview,menu
  147. "允许插件
  148. filetype plugin on
  149. "共享剪贴板
  150. set clipboard=unnamed
  151. "从不备份
  152. set nobackup
  153. "make 运行
  154. :set makeprg=g++\ -Wall\ \ %
  155. "自动保存
  156. set autowrite
  157. set ruler " 打开状态栏标尺
  158. set cursorline " 突出显示当前行
  159. set magic " 设置魔术
  160. set guioptions-=T " 隐藏工具栏
  161. set guioptions-=m " 隐藏菜单栏
  162. "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
  163. " 设置在状态行显示的信息
  164. set foldcolumn=0
  165. set foldmethod=indent
  166. set foldlevel=3
  167. set foldenable " 开始折叠
  168. " 不要使用vi的键盘模式,而是vim自己的
  169. set nocompatible
  170. " 语法高亮
  171. set syntax=on
  172. " 去掉输入错误的提示声音
  173. set noeb
  174. " 在处理未保存或只读文件的时候,弹出确认
  175. set confirm
  176. " 自动缩进
  177. set autoindent
  178. set cindent
  179. " Tab键的宽度
  180. set tabstop=4
  181. " 统一缩进为4
  182. set softtabstop=4
  183. set shiftwidth=4
  184. " 不要用空格代替制表符
  185. set noexpandtab
  186. " 在行和段开始处使用制表符
  187. set smarttab
  188. " 显示行号
  189. set number
  190. " 历史记录数
  191. set history=1000
  192. "禁止生成临时文件
  193. set nobackup
  194. set noswapfile
  195. "搜索忽略大小写
  196. set ignorecase
  197. "搜索逐字符高亮
  198. set hlsearch
  199. set incsearch
  200. "行内替换
  201. set gdefault
  202. "编码设置
  203. set enc=utf-8
  204. set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
  205. "语言设置
  206. set langmenu=zh_CN.UTF-8
  207. set helplang=cn
  208. " 我的状态行显示的内容(包括文件类型和解码)
  209. set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
  210. set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
  211. " 总是显示状态行
  212. set laststatus=2
  213. " 命令行(在状态行下)的高度,默认为1,这里是2
  214. set cmdheight=2
  215. " 侦测文件类型
  216. filetype on
  217. " 载入文件类型插件
  218. filetype plugin on
  219. " 为特定文件类型载入相关缩进文件
  220. filetype indent on
  221. " 保存全局变量
  222. set viminfo+=!
  223. " 带有如下符号的单词不要被换行分割
  224. set iskeyword+=_,$,@,%,#,-
  225. " 字符间插入的像素行数目
  226. set linespace=0
  227. " 增强模式中的命令行自动完成操作
  228. set wildmenu
  229. " 使回格键(backspace)正常处理indent, eol, start等
  230. set backspace=2
  231. " 允许backspace和光标键跨越行边界
  232. set whichwrap+=<,>,h,l
  233. " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
  234. set mouse=a
  235. set selection=exclusive
  236. set selectmode=mouse,key
  237. " 通过使用: commands命令,告诉我们文件的哪一行被改变过
  238. set report=0
  239. " 在被分割的窗口间显示空白,便于阅读
  240. set fillchars=vert:\ ,stl:\ ,stlnc:\
  241. " 高亮显示匹配的括号
  242. set showmatch
  243. " 匹配括号高亮的时间(单位是十分之一秒)
  244. set matchtime=1
  245. " 光标移动到buffer的顶部和底部时保持3行距离
  246. set scrolloff=3
  247. " 为C程序提供自动缩进
  248. set smartindent
  249. " 高亮显示普通txt文件(需要txt.vim脚本)
  250. au BufRead,BufNewFile * setfiletype txt
  251. "自动补全
  252. :inoremap ( ()<ESC>i
  253. :inoremap ) <c-r>=ClosePair(')')<CR>
  254. ":inoremap { {<CR>}<ESC>O
  255. ":inoremap } <c-r>=ClosePair('}')<CR>
  256. :inoremap [ []<ESC>i
  257. :inoremap ] <c-r>=ClosePair(']')<CR>
  258. :inoremap " ""<ESC>i
  259. :inoremap ' ''<ESC>i
  260. function! ClosePair(char)
  261. if getline('.')[col('.') - 1] == a:char
  262. return "\<Right>"
  263. else
  264. return a:char
  265. endif
  266. endfunction
  267. filetype plugin indent on
  268. "打开文件类型检测, 加了这句才可以用智能补全
  269. set completeopt=longest,menu
  270. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/216731
推荐阅读
相关标签
  

闽ICP备14008679号