Vim 配置文件在 ~/.vimrc
,打开 Vim 运行 :PlugInstall
安装插件。
vim-plug 是一个 Vim 插件管理器。
call plug#begin()
call plug#end()
gruvbox 是一个 Vim 主题。
call plug#begin()
Plug 'morhetz/gruvbox'
call plug#end()
autocmd vimenter * ++nested colorscheme gruvbox
set background=dark
vim-devicons 为 Vim 插件添加图标。
call plug#begin()
Plug 'ryanoasis/vim-devicons'
call plug#end()
vim-airline 为 Vim 添加 statusline。
call plug#begin()
Plug 'vim-airline/vim-airline'
call plug#end()
tabline 为 Vim 美化 tabline。
call plug#begin()
Plug 'mkitt/tabline.vim'
call plug#end()
tarbar 支持快速浏览当前文件的标签和结构。
call plug#begin()
Plug 'majutsushi/tagbar'
let g:tagbar_sort = 0
let g:tagbar_autoclose = 1
let g:tagbar_map_zoomwin = "a"
let g:tagbar_show_linenumbers = 1
nnoremap <C-t> :TagbarToggle<CR>
call plug#end()
nerdtree 支持浏览文件系统。
用 vim-nerdtree-tabs 配置当切换标签页的时候默认移动到文件中,而不是 NERDTree。
nerdtree-git-plugin 支持在 nerdtree 中显示文件的 git status
。
call plug#begin()
Plug 'preservim/nerdtree'
let g:NERDTreeMapToggleZoom = "a"
let g:NERDTreeShowLineNumbers = 1
nnoremap <C-n> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
Plug 'jistr/vim-nerdtree-tabs'
let g:nerdtree_tabs_focus_on_files = 1
let g:nerdtree_tabs_open_on_gui_startup = 0
let g:nerdtree_tabs_open_on_console_startup = 0
Plug 'Xuyuanp/nerdtree-git-plugin'
call plug#end()
" Start NERDTree when Vim starts with a directory argument.
autocmd StdinReadPre * let s:std_in = 1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') |
\ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif
" Close the tab if NERDTree is the only window remaining in it.
autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
fzf 支持命令行模糊搜索,fzf.vim 支持在 Vim 中使用 fzf。
call plug#begin()
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
let g:fzf_layout = { 'down': '40%' }
let g:fzf_action = {
\ 'ctrl-t': 'tab drop',
\ 'ctrl-s': 'split',
\ 'ctrl-v': 'vsplit'
\ }
nnoremap <C-p> :call GFilesFallback()<CR>
nnoremap <leader>b :Buffers<CR>
nnoremap <leader>a :Ag<CR>
nnoremap <leader>r :Rg<CR>
function! GFilesFallback()
let command = system('git rev-parse --is-inside-work-tree') =~ 'true' ? ':GFiles' : ':Files'
exec "normal " . command . "\<CR>"
return 0
endfunction
call plug#end()
vim-gitgutter 支持显示文件的 git diff
。
vim-rainbow 支持将成对的括号高亮显示。
call plug#begin()
Plug 'airblade/vim-gitgutter'
Plug 'frazrepo/vim-rainbow'
let g:rainbow_active = 1
call plug#end()
vim-go 支持 Go 语言相关操作。
call plug#begin()
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
let g:go_def_reuse_buffer = 1
let g:go_def_mapping_enabled = 0
let g:go_doc_keywordprg_enabled = 0
au FileType go nnoremap <C-[> :GoDef<CR>
au FileType go nnoremap <C-]> <Plug>(go-def-tab)
au FileType go nnoremap <C-\> :GoImplements<CR>
call plug#end()
autocmd VimEnter * :clearjumps
call plug#begin()
Plug 'morhetz/gruvbox'
Plug 'ryanoasis/vim-devicons'
Plug 'vim-airline/vim-airline'
Plug 'mkitt/tabline.vim'
Plug 'majutsushi/tagbar'
let g:tagbar_sort = 0
let g:tagbar_autoclose = 1
let g:tagbar_map_zoomwin = "a"
let g:tagbar_show_linenumbers = 1
nnoremap <C-t> :TagbarToggle<CR>
Plug 'preservim/nerdtree'
let g:NERDTreeMapToggleZoom = "a"
let g:NERDTreeShowLineNumbers = 1
nnoremap <C-n> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
Plug 'jistr/vim-nerdtree-tabs'
let g:nerdtree_tabs_focus_on_files = 1
let g:nerdtree_tabs_open_on_gui_startup = 0
let g:nerdtree_tabs_open_on_console_startup = 0
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
let g:fzf_layout = { 'down': '40%' }
let g:fzf_action = {
\ 'ctrl-t': 'tab drop',
\ 'ctrl-s': 'split',
\ 'ctrl-v': 'vsplit'
\ }
nnoremap <C-p> :call GFilesFallback()<CR>
nnoremap <leader>b :Buffers<CR>
nnoremap <leader>a :Ag<CR>
nnoremap <leader>r :Rg<CR>
function! GFilesFallback()
let command = system('git rev-parse --is-inside-work-tree') =~ 'true' ? ':GFiles' : ':Files'
exec "normal " . command . "\<CR>"
return 0
endfunction
Plug 'airblade/vim-gitgutter'
Plug 'frazrepo/vim-rainbow'
let g:rainbow_active = 1
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
let g:go_def_reuse_buffer = 1
let g:go_def_mapping_enabled = 0
let g:go_doc_keywordprg_enabled = 0
au FileType go nnoremap <C-[> :GoDef<CR>
au FileType go nnoremap <C-]> <Plug>(go-def-tab)
au FileType go nnoremap <C-\> :GoImplements<CR>
call plug#end()
nnoremap <C-h> <C-W>h
nnoremap <C-l> <C-W>l
nnoremap <C-j> <C-W>j
nnoremap <C-k> <C-W>k
nnoremap <C-left> :tabprevious<CR>
nnoremap <C-right> :tabnext<CR>
nnoremap <C-w> :call CloseTab()<CR>
function! CloseTab()
let command = tabpagenr() == 1 ? ':qa' : ':tabclose'
exec "normal " . command . "\<CR>"
return 0
endfunction
autocmd vimenter * ++nested colorscheme gruvbox
" Start NERDTree when Vim starts with a directory argument.
autocmd StdinReadPre * let s:std_in = 1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') |
\ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif
" Close the tab if NERDTree is the only window remaining in it.
autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
autocmd VimEnter * :clearjumps
" https://stackoverflow.com/a/22543937/19550472
set nocompatible
" https://stackoverflow.com/a/21196080/19550472
set encoding=utf-8
set fileencoding=utf-8
" https://vi.stackexchange.com/a/28721/51010
set re=2
" https://stackoverflow.com/a/35794968/19550472
highlight ColorColumn ctermbg=gray
set colorcolumn=80
set autoindent expandtab tabstop=4 shiftwidth=4
set background=dark
set nu
发布时间:2024-04-17
更新时间:2024-04-19
作者:liangjunmo
版权:禁止任何形式的转载