1. 程式人生 > 實用技巧 >vim配置方法.vimrc

vim配置方法.vimrc

我的低端版.vimrc

  1 " 設定字元編碼                                                                                                             
  2 set fileencoding=utf-8                                             
  3 set fileencodings=utf-8,gb2312,gb18030,latin1                      
  4 set termencoding=utf-8
5 set encoding=utf-8 6 7 " 語法高亮 8 syntax on
9 " 深色背景 10 "color evening 11 " 檢測檔案型別 12 filetype on 13 " 根據檔案型別載入對應的外掛
14 filetype plugin on 15 16 " 顯示行號 17 set number 18 " 在第64列顯示豎線 19 "set cc=64 20 " 高亮顯示當前行 21 set cursorline 22 23 " 設定各種縮排 24 set tabstop=4 25 set softtabstop=4 26 set shiftwidth=4 27 set autoindent 28 set smartindent 29 set cindent 30 " tab轉換為空格 31 set expandtab 32 33 "Paste toggle - when pasting something in, don't indent. 34 set pastetoggle=<F3> 35 36 " 將ESC鍵對映為兩次j鍵 37 "inoremap jj <Esc> 38 39 " 自動完成大括號 40 "imap { {<CR>}<Esc>kA<CR>

下面是別人的,轉自https://blog.csdn.net/amoscykl/article/details/80616688

set nocompatible

filetype on

 

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

call vundle#begin()

 

 

" 這裡根據自己需要的外掛來設定,以下是我的配置 "

"

" YouCompleteMe:語句補全外掛

set runtimepath+=~/.vim/bundle/YouCompleteMe

autocmd InsertLeave * if pumvisible() == 0|pclose|endif "離開插入模式後自動關閉預覽視窗"

let g:ycm_collect_identifiers_from_tags_files = 1           " 開啟 YCM基於標籤引擎

let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 註釋與字串中的內容也用於補全

let g:syntastic_ignore_files=[".*\.py$"]

let g:ycm_seed_identifiers_with_syntax = 1                  " 語法關鍵字補全

let g:ycm_complete_in_comments = 1

let g:ycm_confirm_extra_conf = 0                            " 關閉載入.ycm_extra_conf.py提示

let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']  " 對映按鍵,沒有這個會攔截掉tab, 導致其他外掛的tab不能用.

let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']

let g:ycm_complete_in_comments = 1                          " 在註釋輸入中也能補全

let g:ycm_complete_in_strings = 1                           " 在字串輸入中也能補全

let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 註釋和字串中的文字也會被收入補全

let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

let g:ycm_show_diagnostics_ui = 0                           " 禁用語法檢查

inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"             " 回車即選中當前項

nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>     " 跳轉到定義處

let g:ycm_min_num_of_chars_for_completion=2                 " 從第2個鍵入字元就開始羅列匹配項

"

 

 

 

" github 倉庫中的外掛 "

Plugin 'VundleVim/Vundle.vim'

 

 

Plugin 'vim-airline/vim-airline'

"vim-airline配置:優化vim介面"

"let g:airline#extensions#tabline#enabled = 1

" airline設定

" 顯示顏色

set t_Co=256

set laststatus=2

" 使用powerline打過補丁的字型

let g:airline_powerline_fonts = 1

" 開啟tabline

let g:airline#extensions#tabline#enabled = 1

" tabline中當前buffer兩端的分隔字元

let g:airline#extensions#tabline#left_sep = ' '

" tabline中未啟用buffer兩端的分隔字元

let g:airline#extensions#tabline#left_alt_sep = ' '

" tabline中buffer顯示編號

let g:airline#extensions#tabline#buffer_nr_show = 1

" 對映切換buffer的鍵位

nnoremap [b :bp<CR>

nnoremap ]b :bn<CR>

" 對映<leader>num到num buffer

map <leader>1 :b 1<CR>

map <leader>2 :b 2<CR>

map <leader>3 :b 3<CR>

map <leader>4 :b 4<CR>

map <leader>5 :b 5<CR>

map <leader>6 :b 6<CR>

map <leader>7 :b 7<CR>

map <leader>8 :b 8<CR>

map <leader>9 :b 9<CR>

 

 

 

" vim-scripts 中的外掛 "

Plugin 'taglist.vim'

"ctags 配置:F3快捷鍵顯示程式中的各種tags,包括變數和函式等。

map <F3> :TlistToggle<CR>

let Tlist_Use_Right_Window=1

let Tlist_Show_One_File=1

let Tlist_Exit_OnlyWindow=1

let Tlist_WinWidt=25

 

Plugin 'The-NERD-tree'

"NERDTree 配置:F2快捷鍵顯示當前目錄樹

map <F2> :NERDTreeToggle<CR>

let NERDTreeWinSize=25 

 

Plugin 'indentLine.vim'

Plugin 'delimitMate.vim'

 

" 非 github 倉庫的外掛"

" Plugin 'git://git.wincent.com/command-t.git'

" 本地倉庫的外掛 "

 

call vundle#end()

 

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""新檔案標題

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"新建.c,.h,.sh,.java檔案,自動插入檔案頭 

autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 

""定義函式SetTitle,自動插入檔案頭 

func SetTitle() 

    "如果檔案型別為.sh檔案 

    if &filetype == 'sh' 

        call setline(1, "##########################################################################") 

        call append(line("."), "# File Name: ".expand("%")) 

        call append(line(".")+1, "# Author: amoscykl") 

        call append(line(".")+2, "# mail: [email protected]") 

        call append(line(".")+3, "# Created Time: ".strftime("%c")) 

        call append(line(".")+4, "#########################################################################") 

        call append(line(".")+5, "#!/bin/zsh")

        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")

        call append(line(".")+7, "export PATH")

        call append(line(".")+8, "")

    else 

        call setline(1, "/*************************************************************************") 

        call append(line("."), "    > File Name: ".expand("%")) 

        call append(line(".")+1, "    > Author: amoscykl") 

        call append(line(".")+2, "    > Mail: [email protected] ") 

        call append(line(".")+3, "    > Created Time: ".strftime("%c")) 

        call append(line(".")+4, " ************************************************************************/") 

        call append(line(".")+5, "")

    endif

    if &filetype == 'cpp'

        call append(line(".")+6, "#include<iostream>")

        call append(line(".")+7, "using namespace std;")

        call append(line(".")+8, "")

    endif

    if &filetype == 'c'

        call append(line(".")+6, "#include<stdio.h>")

        call append(line(".")+7, "")

    endif

    "    if &filetype == 'java'

    "        call append(line(".")+6,"public class ".expand("%"))

    "        call append(line(".")+7,"")

    "    endif

    "新建檔案後,自動定位到檔案末尾

    autocmd BufNewFile * normal G

endfunc 

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"鍵盤命令

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

 

nmap <leader>w :w!<cr>

nmap <leader>f :find<cr>

 

" 對映全選+複製 ctrl+a

map <C-A> ggVGY

map! <C-A> <Esc>ggVGY

map <F12> gg=G

" 選中狀態下 Ctrl+c 複製

vmap <C-c> "+y

 

 

 

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

""實用設定

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 設定當檔案被改動時自動載入

set autoread

" quickfix模式

autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>

"程式碼補全 

set completeopt=preview,menu 

"允許外掛  

filetype plugin on

"共享剪貼簿  

set clipboard=unnamed 

"從不備份  

set nobackup

"make 執行

:set makeprg=g++\ -Wall\ \ %

"自動儲存

set autowrite

set ruler                   " 開啟狀態列標尺

set cursorline              " 突出顯示當前行

set magic                   " 設定魔術

set guioptions-=T           " 隱藏工具欄

set guioptions-=m           " 隱藏選單欄

"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\

" 設定在狀態行顯示的資訊

set foldcolumn=0

set foldmethod=indent 

set foldlevel=3 

set foldenable              " 開始摺疊

" 不要使用vi的鍵盤模式,而是vim自己的

set nocompatible

" 語法高亮

set syntax=on

" 去掉輸入錯誤的提示聲音

set noeb

" 在處理未儲存或只讀檔案的時候,彈出確認

set confirm

" 自動縮排

set autoindent

set cindent

" Tab鍵的寬度

set tabstop=4

" 統一縮排為4

set softtabstop=4

set shiftwidth=4

" 不要用空格代替製表符

set noexpandtab

" 在行和段開始處使用製表符

set smarttab

" 顯示行號

set number

" 歷史記錄數

set history=1000

"禁止生成臨時檔案

set nobackup

set noswapfile

"搜尋忽略大小寫

set ignorecase

"搜尋逐字元高亮

set hlsearch

set incsearch

"行內替換

set gdefault

"編碼設定

set enc=utf-8

set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

"語言設定

set langmenu=zh_CN.UTF-8

set helplang=cn

" 我的狀態行顯示的內容(包括檔案型別和解碼)

set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}

set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]

" 總是顯示狀態行

set laststatus=2

" 命令列(在狀態行下)的高度,預設為1,這裡是2

set cmdheight=2

" 偵測檔案型別

filetype on

" 載入檔案型別外掛

filetype plugin on

" 為特定檔案型別載入相關縮排檔案

filetype indent on

" 儲存全域性變數

set viminfo+=!

" 帶有如下符號的單詞不要被換行分割

set iskeyword+=_,$,@,%,#,-

" 字元間插入的畫素行數目

set linespace=0

" 增強模式中的命令列自動完成操作

set wildmenu

" 使回格鍵(backspace)正常處理indent, eol, start等

set backspace=2

" 允許backspace和游標鍵跨越行邊界

set whichwrap+=<,>,h,l

" 可以在buffer的任何地方使用滑鼠(類似office中在工作區雙擊滑鼠定位)

set mouse=a

set selection=exclusive

set selectmode=mouse,key

" 通過使用: commands命令,告訴我們檔案的哪一行被改變過

set report=0

" 在被分割的視窗間顯示空白,便於閱讀

set fillchars=vert:\ ,stl:\ ,stlnc:\

" 高亮顯示匹配的括號

set showmatch

" 匹配括號高亮的時間(單位是十分之一秒)

set matchtime=1

" 游標移動到buffer的頂部和底部時保持3行距離

set scrolloff=3

" 為C程式提供自動縮排

set smartindent

" 高亮顯示普通txt檔案(需要txt.vim指令碼)

 au BufRead,BufNewFile *  setfiletype txt

"自動補全

:inoremap ( ()<ESC>i

:inoremap ) <c-r>=ClosePair(')')<CR>

":inoremap { {<CR>}<ESC>O

":inoremap } <c-r>=ClosePair('}')<CR>

:inoremap [ []<ESC>i

:inoremap ] <c-r>=ClosePair(']')<CR>

:inoremap " ""<ESC>i

:inoremap ' ''<ESC>i

function! ClosePair(char)

    if getline('.')[col('.') - 1] == a:char

        return "\<Right>"

    else

        return a:char

    endif

endfunction

filetype plugin indent on 

"開啟檔案型別檢測, 加了這句才可以用智慧補全

set completeopt=longest,menu

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""