1. 程式人生 > >Vim配置:在win10下編譯運行C/C++

Vim配置:在win10下編譯運行C/C++

fun github tree ogg status 代碼 觸發 插件 enc

Vim配置:在win10下編譯運行C/C++

為什麽用Vim

nvim對windows實在是不是很友好,所以打算棄坑。本來想直接用spacevim的,本來以前安裝好了,無奈手賤,給刪了,現在在配置後發現老是有問題,所以放棄spacevim,在過個半年一年之後再來看看。
所以,開始重新調配vim。

安裝

官網下載
PC: MS-DOS and MS-Windows下的
For modern MS-Windows systems (starting with XP) you can simply use the executable installer:gvim80.exe
雙擊執行,放到合適的目錄。

不過這個貌似是沒有編譯的,有些插件不能完全用,最好再在github這裏下載gvim_8.0.1763_x64.zip

解壓到原來安裝好的目錄裏去。

插件管理vim-plug

vim-plug

  • 直接復制這個鏈接裏的plug.vim的代碼,到D:\Editor\Vim\vim80\autoload下,創建plug.vim,粘貼代碼,就可以了。

接下來就是vim-plug的用法了。對了,用vim-plug的原因是它支持異步,下載管理更快。

D:\Editor\Vim_vimrc中寫入

call plug#begin('D:\Editor\Vim\vimfiles\plug')

"狀態欄的例子
Plug 'bling/vim-airline'
Plug 'vim-airline/vim-airline-themes'

call plug#end()

"關於狀態欄的小配置
"Powerline setting
let g:airline_theme='molokai'
let g:airline_powerline_fonts = 1

保存。
打開gvim.exe,運行:PlugInstall安裝好插件後,就能使用了這些插件了。

更多插件

必備插件

"美化
Plug ‘flazz/vim-colorschemes‘
"狀態欄
Plug ‘bling/vim-airline‘
Plug ‘vim-airline/vim-airline-themes‘
"一只說話的狗
Plug ‘mhinz/vim-startify‘
"主題選擇
Plug ‘tomasr/molokai‘
Plug ‘morhetz/gruvbox‘

"文件樹
Plug ‘scrooloose/nerdtree‘

"文件搜索

Plug ‘Yggdroot/LeaderF‘

"異步語法檢查
Plug ‘w0rp/ale‘

"括號補全
Plug ‘jiangmiao/auto-pairs‘

"註釋代碼工具
"\cc註釋當前行 \cu 撤銷註釋當前行 \cs sexily註釋 \cA 行尾註釋,切換成輸入模式
Plug ‘scrooloose/nerdcommenter‘

"編譯運行
"F4 添加作者信息,更新作者信息
"F9 一鍵保存、編譯、連接存並運行
"Ctrl + F9 一鍵保存並編譯
"Ctrl + F10 一鍵保存並連接
"F8 編譯調試(僅限於單文件)(gdb)
Plug ‘Svtter/ACM.vim‘

"自動補全
Plug ‘ervandew/supertab‘

"自動彈出提示
Plug ‘vim-scripts/AutoComplPop‘

我的_vimrc文件

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

"                                  PlugList                                  "

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

call plug#begin('D:\Editor\Vim\vimfiles\plug')

"美化

Plug 'flazz/vim-colorschemes'

"狀態欄

Plug 'bling/vim-airline'

Plug 'vim-airline/vim-airline-themes'

"一只說話的狗

Plug 'mhinz/vim-startify'

"主題選擇

Plug 'tomasr/molokai'

Plug 'morhetz/gruvbox'

"文件樹

Plug 'scrooloose/nerdtree'

"文件搜索

Plug 'Yggdroot/LeaderF'

"非異步語法檢查,已棄用

"Plug 'scrooloose/syntastic'

"異步語法檢查

Plug 'w0rp/ale'

"括號補全

Plug 'jiangmiao/auto-pairs'

"註釋代碼工具

"\cc註釋當前行 \cu 撤銷註釋當前行 \cs sexily註釋 \cA 行尾註釋,切換成輸入模式

Plug 'scrooloose/nerdcommenter'

"編譯運行

"F4 添加作者信息,更新作者信息

"F9 一鍵保存、編譯、連接存並運行

"Ctrl + F9 一鍵保存並編譯

"Ctrl + F10 一鍵保存並連接

"F8 編譯調試(僅限於單文件)(gdb)

Plug 'Svtter/ACM.vim'

"自動補全

Plug 'ervandew/supertab'

"自動彈出

Plug 'vim-scripts/AutoComplPop'

call plug#end()

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

"                              plugin settings                               "

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

"set my leader

let mapleader=";"

"let mapleader="\<Space>"

set nocompatible

" Initialize plugin system

filetype plugin indent on

"加強版狀態欄

let g:airline_theme='molokai'

"使用powerline打過補丁的字體

let g:airline_powerline_fonts = 1

"關閉狀態顯示空白符號計數,這個對我用處不大"

let g:airline#extensions#whitespace#enabled = 0

let g:airline#extensions#whitespace#symbol = '!'

"開啟tabline

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

"tabline中buffer顯示編號

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

" 配色方案

set background=dark

"colorscheme solarized

"colorscheme molokai

colorscheme gruvbox

"colorscheme phd

" 工程文件瀏覽

" 使用 NERDTree 插件查看工程文件。

nmap <Leader>f :NERDTreeToggle<CR>

" 設置 NERDTree 子窗口寬度

let NERDTreeWinSize=22

" 設置 NERDTree 子窗口位置

let NERDTreeWinPos="left"

" 顯示隱藏文件

let NERDTreeShowHidden=1

" NERDTree 子窗口中不顯示冗余幫助信息

let NERDTreeMinimalUI=1

" 刪除文件時自動刪除文件對應 buffer

let NERDTreeAutoDeleteBuffer=1

"ale

"始終開啟標誌列

let g:ale_sign_column_always = 1

let g:ale_set_highlights = 0

"顯示Linter名稱,出錯或警告等相關信息

let g:ale_echo_msg_error_str = 'E'

let g:ale_echo_msg_warning_str = 'W'

let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'

"普通模式下,sp前往上一個錯誤或警告,sn前往下一個錯誤或警告

nmap sp <Plug>(ale_previous_wrap)

nmap sn <Plug>(ale_next_wrap)

"<Leader>s觸發/關閉語法檢查

nmap <Leader>s :ALEToggle<CR>

"<Leader>d查看錯誤或警告的詳細信息

nmap <Leader>d :ALEDetail<CR>

"文件內容發生變化時不進行檢查

"let g:ale_lint_on_text_changed = 'never'

"打開文件時不進行檢查

"let g:ale_lint_on_enter = 0

"對C/C++使用Clang進行語法檢查

let g:ale_linters = {'c': 'clang'}

let g:ale_linters = {'c++': 'clang++'}

"禁用了javascript的eslint

let g:ale_linters = {

\   'javascript': ['eslint'],

\}

"LeaderF

"這裏定義了 CTRL+P 在當前項目目錄打開文件搜索,CTRL+N 打開 MRU搜索,搜索你最近打開的文件,這兩項是我用的最頻繁的功能。接著 ALT+P 打開函數搜索,ALT+N 打開 Buffer 搜索

let g:Lf_ShortcutF = '<c-p>'

let g:Lf_ShortcutB = '<m-n>'

noremap <c-n> :LeaderfMru<cr>

noremap <m-p> :LeaderfFunction<cr>

noremap <m-n> :LeaderfBuffer<cr>

noremap <m-m> :LeaderfTag<cr>

let g:Lf_StlSeparator = { 'left': '', 'right': '', 'font': '' }

let g:Lf_RootMarkers = ['.project', '.root', '.svn', '.git']

let g:Lf_WorkingDirectoryMode = 'Ac'

let g:Lf_WindowHeight = 0.30

let g:Lf_CacheDirectory = expand('~/.vim/cache')

let g:Lf_ShowRelativePath = 0

let g:Lf_HideHelp = 1

let g:Lf_StlColorscheme = 'powerline'

let g:Lf_NormalMap = {

    \ "File":   [["<ESC>", ':exec g:Lf_py "fileExplManager.quit()"<CR>'],

    \            ["<F6>", ':exec g:Lf_py "fileExplManager.quit()"<CR>'] ],

    \ "Buffer": [["<ESC>", ':exec g:Lf_py "bufExplManager.quit()"<CR>'],

    \            ["<F6>", ':exec g:Lf_py "bufExplManager.quit()"<CR>'] ],

    \ "Mru":    [["<ESC>", ':exec g:Lf_py "mruExplManager.quit()"<CR>']],

    \ "Tag":    [["<ESC>", ':exec g:Lf_py "tagExplManager.quit()"<CR>']],

    \ "Function":    [["<ESC>", ':exec g:Lf_py "functionExplManager.quit()"<CR>']],

    \ "Colorscheme":    [["<ESC>", ':exec g:Lf_py "colorschemeExplManager.quit()"<CR>']],

    \ }

"自動補全

"補全完成時預覽窗口自動消失

augroup complete

  autocmd!

  autocmd CompleteDone * pclose

augroup end

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

"                               common setting                               "

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

cd D:\Code\VimCode

" 設置 gvim 顯示字體

set guifont=DejaVu\ Sans\ Mono\ for\ Powerline:h11

" 取消菜單欄和導航欄  

set guioptions-=m  

set guioptions-=T  

" 去除左右兩邊滾動條

set go-=r

set go-=L

" 設置水平行數和豎直列數  

set lines=30  

set columns=90

" 總是顯示狀態欄

set laststatus=2

" 顯示光標當前位置

set ruler

" 開啟行號顯示

set number

" 上下行號關聯

set relativenumber

" 高亮顯示當前行/列

set cursorline

set cursorcolumn

" 高亮顯示搜索結果

set hlsearch

"自動換行整詞換行

set wrap

set linebreak

"自動設置當前目錄為正在編輯的目錄

set autochdir     

"在光標接近底端或頂端時,自動下滾或上滾

set scrolloff=10     

"文件打開方式

set tenc=utf-8

set encoding=utf-8

set fileencodings=utf-8,chinese,latin-1

if has("win32")

    set fileencoding=chinese

else

    set fileencoding=utf-8

endif

"解決菜單亂碼

source $VIMRUNTIME/delmenu.vim

source $VIMRUNTIME/menu.vim

"解決consle輸出亂碼

language messages zh_CN.utf-8

" 開啟實時搜索功能

set incsearch

" 搜索時大小寫不敏感

set ignorecase

" 關閉兼容模式

set nocompatible

" 沒有八進制

set nrformats=

" vim 自身命令行模式智能補全

set wildmenu

"設置當文件在外部被修改,自動更新該文件

set autoread         

"設置不生成備份文件

set nobackup   

" 縮進

" 自適應不同語言的智能縮進

filetype indent on

" 將制表符擴展為空格

set expandtab

" 設置編輯時制表符占用空格數

set tabstop=4

" 設置格式化時制表符占用空格數

set shiftwidth=4

" 讓 vim 把連續數量的空格視為一個制表符

set softtabstop=4

"退格鍵不能用問題

set backspace=indent,eol,start

syntax on

syntax enable

set autoread

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

"                               keyboard-binding                             "

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

" 設置快捷鍵將選中文本塊復制至系統剪貼板

vnoremap <Leader>y "+y

" 設置快捷鍵將系統剪貼板內容粘貼至vim

nmap <Leader>p "+p

" 定義快捷鍵關閉當前分割窗口

nmap <Leader>q :q<CR>

" 定義快捷鍵保存當前窗口內容

nmap <Leader>w :w<CR>

" 定義快捷鍵保存所有窗口內容並退出 vim

nmap <Leader>WQ :wa<CR>:q<CR>

" 不做任何保存,直接退出 vim

nmap <Leader>Q :qa!<CR>

Vim配置:在win10下編譯運行C/C++