日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Vim的終極配置方案,完美的寫代碼界面!

 WOLFHERD 2020-09-13

先秀一下我的Vim界面

 

語法補(bǔ)全我用的是YouCompleteMe, 有目錄樹插件,taglist插件等。

通過插件管理器Vundle來進(jìn)行安裝,具體方法自行百度。

 

背景可以通過換張自己喜愛的壁紙,然后調(diào)終端的透明度,就可以對著自己喜愛的場景編程啦~

有語法高亮,語句補(bǔ)全,顯示行號,自動縮進(jìn)等等功能。

還有創(chuàng)建源文件自動添加頭文件的功能,例如寫一個.c程序

自動添加了寫在配置文件里的信息,包括作者名,郵箱,時間和程序的頭文件等。

 

 

 

配置

如果你需要配置vim,只需在Home目錄創(chuàng)建一個~/.vimrc文件即可以配置vim了,如需安裝插件,在~/.vim目錄下創(chuàng)建一個bundle文件夾,插件裝在里面。(我通過Vundle管理插件,自行百度Vundle怎么使用),可以參考我的vimrc配置文件:

含有完整的注釋

  1. set nocompatible
  2. filetype on
  3. set rtp+=~/.vim/bundle/Vundle.vim
  4. call vundle#begin()
  5. " 這里根據(jù)自己需要的插件來設(shè)置,以下是我的配置 "
  6. "
  7. " YouCompleteMe:語句補(bǔ)全插件
  8. set runtimepath+=~/.vim/bundle/YouCompleteMe
  9. autocmd InsertLeave * if pumvisible() == 0|pclose|endif "離開插入模式后自動關(guān)閉預(yù)覽窗口"
  10. let g:ycm_collect_identifiers_from_tags_files = 1 " 開啟 YCM基于標(biāo)簽引擎
  11. let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注釋與字符串中的內(nèi)容也用于補(bǔ)全
  12. let g:syntastic_ignore_files=[".*\.py$"]
  13. let g:ycm_seed_identifiers_with_syntax = 1 " 語法關(guān)鍵字補(bǔ)全
  14. let g:ycm_complete_in_comments = 1
  15. let g:ycm_confirm_extra_conf = 0 " 關(guān)閉加載.ycm_extra_conf.py提示
  16. let g:ycm_key_list_select_completion = ['<c-n>', '<Down>'] " 映射按鍵,沒有這個會攔截掉tab, 導(dǎo)致其他插件的tab不能用.
  17. let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
  18. let g:ycm_complete_in_comments = 1 " 在注釋輸入中也能補(bǔ)全
  19. let g:ycm_complete_in_strings = 1 " 在字符串輸入中也能補(bǔ)全
  20. let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注釋和字符串中的文字也會被收入補(bǔ)全
  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>" " 回車即選中當(dāng)前項
  24. nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳轉(zhuǎn)到定義處
  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配置:優(yōu)化vim界面"
  31. "let g:airline#extensions#tabline#enabled = 1
  32. " airline設(shè)置
  33. " 顯示顏色
  34. set t_Co=256
  35. set laststatus=2
  36. " 使用powerline打過補(bǔ)丁的字體
  37. let g:airline_powerline_fonts = 1
  38. " 開啟tabline
  39. let g:airline#extensions#tabline#enabled = 1
  40. " tabline中當(dāng)前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,包括變量和函數(shù)等。
  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快捷鍵顯示當(dāng)前目錄樹
  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. """""新文件標(biāo)題
  79. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  80. "新建.c,.h,.sh,.java文件,自動插入文件頭
  81. autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
  82. ""定義函數(shù)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: amoscykl")
  89. call append(line(".")+2, "# mail: amoscykl980629@163.com")
  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: amoscykl")
  100. call append(line(".")+2, "> Mail: amoscykl@163.com ")
  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, "")
  113. endif
  114. "if &filetype == 'java'
  115. "call append(line(".")+6,"public class ".expand("%"))
  116. "call append(line(".")+7,"")
  117. "endif
  118. "新建文件后,自動定位到文件末尾
  119. autocmd BufNewFile * normal G
  120. endfunc
  121. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  122. "鍵盤命令
  123. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  124. nmap <leader>w :w!<cr>
  125. nmap <leader>f :find<cr>
  126. " 映射全選+復(fù)制 ctrl+a
  127. map <C-A> ggVGY
  128. map! <C-A> <Esc>ggVGY
  129. map <F12> gg=G
  130. " 選中狀態(tài)下 Ctrl+c 復(fù)制
  131. vmap <C-c> "+y
  132. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  133. ""實用設(shè)置
  134. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  135. " 設(shè)置當(dāng)文件被改動時自動載入
  136. set autoread
  137. " quickfix模式
  138. autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
  139. "代碼補(bǔ)全
  140. set completeopt=preview,menu
  141. "允許插件
  142. filetype plugin on
  143. "共享剪貼板
  144. set clipboard=unnamed
  145. "從不備份
  146. set nobackup
  147. "make 運(yùn)行
  148. :set makeprg=g++\ -Wall\ \ %
  149. "自動保存
  150. set autowrite
  151. set ruler " 打開狀態(tài)欄標(biāo)尺
  152. set cursorline " 突出顯示當(dāng)前行
  153. set magic " 設(shè)置魔術(shù)
  154. set guioptions-=T " 隱藏工具欄
  155. set guioptions-=m " 隱藏菜單欄
  156. "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
  157. " 設(shè)置在狀態(tài)行顯示的信息
  158. set foldcolumn=0
  159. set foldmethod=indent
  160. set foldlevel=3
  161. set foldenable " 開始折疊
  162. " 不要使用vi的鍵盤模式,而是vim自己的
  163. set nocompatible
  164. " 語法高亮
  165. set syntax=on
  166. " 去掉輸入錯誤的提示聲音
  167. set noeb
  168. " 在處理未保存或只讀文件的時候,彈出確認(rèn)
  169. set confirm
  170. " 自動縮進(jìn)
  171. set autoindent
  172. set cindent
  173. " Tab鍵的寬度
  174. set tabstop=4
  175. " 統(tǒng)一縮進(jìn)為4
  176. set softtabstop=4
  177. set shiftwidth=4
  178. " 不要用空格代替制表符
  179. set noexpandtab
  180. " 在行和段開始處使用制表符
  181. set smarttab
  182. " 顯示行號
  183. set number
  184. " 歷史記錄數(shù)
  185. set history=1000
  186. "禁止生成臨時文件
  187. set nobackup
  188. set noswapfile
  189. "搜索忽略大小寫
  190. set ignorecase
  191. "搜索逐字符高亮
  192. set hlsearch
  193. set incsearch
  194. "行內(nèi)替換
  195. set gdefault
  196. "編碼設(shè)置
  197. set enc=utf-8
  198. set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
  199. "語言設(shè)置
  200. set langmenu=zh_CN.UTF-8
  201. set helplang=cn
  202. " 我的狀態(tài)行顯示的內(nèi)容(包括文件類型和解碼)
  203. set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
  204. set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
  205. " 總是顯示狀態(tài)行
  206. set laststatus=2
  207. " 命令行(在狀態(tài)行下)的高度,默認(rèn)為1,這里是2
  208. set cmdheight=2
  209. " 偵測文件類型
  210. filetype on
  211. " 載入文件類型插件
  212. filetype plugin on
  213. " 為特定文件類型載入相關(guān)縮進(jìn)文件
  214. filetype indent on
  215. " 保存全局變量
  216. set viminfo+=!
  217. " 帶有如下符號的單詞不要被換行分割
  218. set iskeyword+=_,$,@,%,#,-
  219. " 字符間插入的像素行數(shù)目
  220. set linespace=0
  221. " 增強(qiáng)模式中的命令行自動完成操作
  222. set wildmenu
  223. " 使回格鍵(backspace)正常處理indent, eol, start等
  224. set backspace=2
  225. " 允許backspace和光標(biāo)鍵跨越行邊界
  226. set whichwrap+=<,>,h,l
  227. " 可以在buffer的任何地方使用鼠標(biāo)(類似office中在工作區(qū)雙擊鼠標(biāo)定位)
  228. set mouse=a
  229. set selection=exclusive
  230. set selectmode=mouse,key
  231. " 通過使用: commands命令,告訴我們文件的哪一行被改變過
  232. set report=0
  233. " 在被分割的窗口間顯示空白,便于閱讀
  234. set fillchars=vert:\ ,stl:\ ,stlnc:\
  235. " 高亮顯示匹配的括號
  236. set showmatch
  237. " 匹配括號高亮的時間(單位是十分之一秒)
  238. set matchtime=1
  239. " 光標(biāo)移動到buffer的頂部和底部時保持3行距離
  240. set scrolloff=3
  241. " 為C程序提供自動縮進(jìn)
  242. set smartindent
  243. " 高亮顯示普通txt文件(需要txt.vim腳本)
  244. au BufRead,BufNewFile * setfiletype txt
  245. "自動補(bǔ)全
  246. :inoremap ( ()<ESC>i
  247. :inoremap ) <c-r>=ClosePair(')')<CR>
  248. ":inoremap { {<CR>}<ESC>O
  249. ":inoremap } <c-r>=ClosePair('}')<CR>
  250. :inoremap [ []<ESC>i
  251. :inoremap ] <c-r>=ClosePair(']')<CR>
  252. :inoremap " ""<ESC>i
  253. :inoremap ' ''<ESC>i
  254. function! ClosePair(char)
  255. if getline('.')[col('.') - 1] == a:char
  256. return "\<Right>"
  257. else
  258. return a:char
  259. endif
  260. endfunction
  261. filetype plugin indent on
  262. "打開文件類型檢測, 加了這句才可以用智能補(bǔ)全
  263. set completeopt=longest,menu
  264. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

然后保存文件,重新打開終端就行了!

 

 

 

 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約