完善windows10安装配置vim_八块腹肌怎么练的博客-CSDN博客_vim windows中的_vimrc配置:
" Vim with all enhancements
source $VIMRUNTIME/vimrc_example.vim
" Use the internal diff if available.
" Otherwise use the special 'diffexpr' for Windows.
if &diffopt !~# 'internal'
set diffexpr=MyDiff()
endif
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg1 = substitute(arg1, '!', '\!', 'g')
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg2 = substitute(arg2, '!', '\!', 'g')
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let arg3 = substitute(arg3, '!', '\!', 'g')
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
if empty(&shellxquote)
let l:shxq_sav = ''
set shellxquote&
endif
let cmd = '"' . $VIMRUNTIME . '\diff"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
let cmd = substitute(cmd, '!', '\!', 'g')
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
if exists('l:shxq_sav')
let &shellxquote=l:shxq_sav
endif
endfunction
" 基本配置
"
"
" 设置行号
set number
" 语法高亮。自动识别代码,使用多种颜色表示
syntax enable
" 选择颜色主题(已经下载好并放到$VIM/vim82/colors文件夹下)
colorscheme badwolf
" 设置gvim的字体
set guifont=Consolas:h15
" 设置gvim下和外部的复制粘贴
vmap <C-c> "+y
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+
" 支持使用鼠标
set mouse=a
" 按下回车键后,下一行的缩进会自动跟上一行的缩进保持一致
set autoindent
" 按下Tab键后,vim显示的空格数
set tabstop=4
" normal模式下,>>增加一级缩进、<<取消一级缩进、==取消全部缩进时,每一级缩进的空格数
set shiftwidth=4
" 自动将Tab转为空格(防止Tab键在不同编辑器缩进不一致导致问题)
set expandtab
" Tab转为多少个空格
set softtabstop=4
" 光标所在行高亮
set cursorline
highlight CursorLine cterm=NONE ctermbg=black guibg=NONE guifg=NONE
" 关闭自动折行
set nowrap
" 垂直滚动时,光标距离顶部/底部的距离(单位:行)
set scrolloff=5
" 水平滚动时,光标距离行首或行尾的距离(单位:字符)
set sidescrolloff=30
" 设置行宽,即一行显示多少字符
set textwidth=1000
" 是否显示状态栏:0表示不显示,1表示只在多窗口显示,2表示显示
set laststatus=2
" 设置状态条显示的信息:文件名、光标所在字符的ASCII码、光标所在字符的ASCII码的十六进制、光标所在的位置、光标所在行之上的内容占整个文件的百分比、文件总行数
set statusline=\ %F%m%r%h%w\ \ \ \ ASCII=\%03.3b\ \ \ \ HEX=\%02.2B\ \ \ \ POS=%04l,%04v\ \ \ \ %p%%\ \ \ \ NumOfLine=%L
" 显示行尾的空格
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
" 光标遇到括号时,自动高亮对应的另一半括号
set showmatch
" 命令行模式下,在底部显示当前键入的指令。例如键入dd删除一行时,键入第一个d,底部右侧显示d,完全键入dd时,操作完成,底部显示消失
set showcmd
" 搜索时,高亮显示搜索结果
set hlsearch
" 搜索时,每输入一个字符,自动跳到第一个匹配的结果
set incsearch
" 搜索时忽略大小写
set ignorecase
" 不创建交换文件
set noswapfile
" 保留 撤销 操作历史
set undofile
" 设置操作历史文件的保存位置
set undodir=$VIM\.undo
" vim需要记住多少次历史操作
set history=1000
" 命令模式下,底部操作指令按下 Tab 键自动补全。第一次按下 Tab,会显示所有匹配的操作指令的清单;第二次按下 Tab,会依次选择各个指令
set wildmenu
set wildmode=longest:list,full
" 定义F1快捷键为切换vim窗口
map <F1> <C-w>w
"设置文件的代码形式 utf8
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936
"设置语言为英文
set langmenu=en_US.UTF-8
language en
"设置python版本为3.9
set pythonthreedll=python39.dll
"设置打开gvim时自动最大化窗口
if has('win32')
au GUIEnter * simalt ~x
else
au GUIEnter * call MaximizeWindow()
endif
function! MaximizeWindow()
silent !wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
endfunction
" F5一键编译运行
map <F5> :call CompileRun()<CR>
func CompileRun()
exec "w"
if &filetype == 'c'
exec '!gcc -g % -o %<.exe -fexec-charset=GBK'
exec '!%<.exe'
elseif &filetype == 'cpp'
exec '!g++ -g -Wall % -o %<.exe -fexec-charset=GBK'
exec '!%<.exe'
elseif &filetype == 'python'
exec '!python %'
endif
endfunc
" Ctrl-F5一键调试
map <C-F5> :call Debug()<CR>
func Debug()
exec "w"
if &filetype == 'c'
exec '!gcc -g % -o %<.exe -fexec-charset=GBK'
exec '!gdb %<.exe'
elseif &filetype == 'cpp'
exec '!g++ -g -Wall % -o %<.exe -fexec-charset=GBK'
exec '!gdb %<.exe'
endif
endfunc
" 设置光标样式
let &t_ti.="\e[1 q"
let &t_SI.="\e[5 q"
let &t_EI.="\e[1 q"
let &t_te.="\e[0 q"
" 插件管理
set rtp+=$VIM\vimfiles\bundle\Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-fugitive'
Plugin 'airblade/vim-gitgutter'
Plugin 'jiangmiao/auto-pairs'
Plugin 'tpope/vim-surround'
Plugin 'scrooloose/nerdcommenter'
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
call vundle#end()
filetype plugin indent on
" 各种插件的配置
"
"
" NERD Commenter配置
" 将leader从"\"改为","
let mapleader = ","
" 在注释符后面自动添加空格
let g:NERDSpaceDelims = 1
" Use compact syntax for prettified multi-line comments:使用紧凑语法美化多行注释
let g:NERDCompactSexyComs = 1
" Align line-wise comment delimiters flush left instead of following code indentation:靠左对齐注释符,而不是跟随代码缩进
let g:NERDDefaultAlign = 'left'
" Allow commenting and inverting empty lines (useful when commenting a region):允许注释和反注释空行(在注释多行代码时很有用)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting:取消注释的同时删除当前行末尾的空格
let g:NERDTrimTrailingWhitespace = 1
" Enable NERDCommenterToggle to check all selected lines is commented or not:暂时不知道什么意思,作什么用途
" let g:NERDToggleCheckAllLines = 1
"
"
" NERDTree配置
" 将F2设置为开关NERDTree的快捷键
map <F2> :NERDTreeToggle<cr>
" 修改树的显示图标
" let g:NERDTreeDirArrowExpandable = '+'
" let g:NERDTreeDirArrowCollapsible = '-'
" 打开vim时如果没有文件自动打开NERDTree
" autocmd vimenter * if !argc()|NERDTree|endif
" 当NERDTree为剩下的唯一窗口时自动关闭
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
"
"
" nerdtree-git-plugin配置
let g:NERDTreeIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "✖",
\ "Dirty" : "✗",
\ "Clean" : "✔︎",
\ 'Ignored' : '☒',
\ "Unknown" : "?"
\ }
由于powershell改变了光标样式,启动vim时会光标并非经典样式,非常影响使用,所以要加入改变光标样式的设置:PowerShell ssh连接Linux情况下,Vim切换插入模式和一般模式时 光标不会改变的解决_iCce_Fox的博客-CSDN博客,这样可以在不改变powershell的光标样式的情况下在vim中使用经典光标样式。如果想更改powershell的光标样式,可以参考:windows terminal_设置光标样式/提示音设置bell notification style_term 光标设置_xuchaoxin1375的博客-CSDN博客。
另外, win11下solarized主题在vim中有光标显示问题,建议在_vimrc中设置其他主题:
" 选择颜色主题(已经下载好并放到$VIM/vim82/colors文件夹下) ,推荐自行下载使用badwolf主题
colorscheme badwolf
然后再在_gvimrc中设置solarized主题(gvim读取完_vimrc后接着读取_gvimrc):
" 选择颜色主题(已经下载好并放到$VIM/vim82/colors文件夹下) ,推荐自行下载使用solarized主题
colorscheme solarized
这样可以使vim和gvim使用不同的配置。