Vim基础配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim基础配置相关的知识,希望对你有一定的参考价值。

Vim虽然网上有着各种各样的Vim插件配置

但是那对于我来说根本是不必要的,在经历了各种配置体验以后,总体上说Vim如果插件越多越卡。而且在以后的开发过程中,如果换了服务器以后,每次都要折腾配置,真心很不方便,Vim插件管理很乱,我也没有时间去学所谓的VimScript,如果一个编辑器的学习成本这么高,已经偏离了我学编程的主要目的了。

以下配置一下主要的样式,不进行插件配置

"===============================================================================
" General Settings 基础设置
"===============================================================================

set history=2000                        "history存储容量

filetype on                             "开启文件类型侦测

filetype indent on                      "自适应不同语言的智能缩进

filetype plugin on                      "允许插件

filetype plugin indent on               "启动自动补全

set nocompatible                        "关闭兼容模式

set autoread                            "文件修改之后自动载入

set shortmess=atI                       "启动的时候不显示那个援助乌干达儿童的提示

set nobackup                            "取消备份。 视情况自己改

set noswapfile                          "关闭交换文件

" 备份,到另一个位置. 防止误删, 目前是取消备份
"set backup
"set backupext=.bak
"set backupdir=/tmp/vimbk/

set wildignore=*.swp,*.bak,*.pyc,*.class,.svn

" 设置 退出vim后,内容显示在终端屏幕, 可以用于查看和复制, 不需要可以去掉
" 好处:误删什么的,如果以前屏幕打开,可以找回
set t_ti= t_te=

" 鼠标暂不启用, 键盘党....
" set mouse-=a
" 启用鼠标
set mouse=a
" Hide the mouse cursor while typing
" set mousehide


"===============================================================================
" Display Settings 展示格式设置
"===============================================================================

" 防止tmux下vim的背景色显示异常
" Refer: http://sunaku.github.io/vim-256color-bce.html
if &term =~ '256color'
  " disable Background Color Erase (BCE) so that color schemes
  " render properly when inside 256-color tmux and GNU screen.
  " see also http://snk.tuxfamily.org/log/vim-256color-bce.html
  set t_ut=
endif

set ruler                               "显示光标当前位置

set showcmd                             "在状态栏显示正在输入的命令

set showmode                            "左下角显示当前vim模式

set scrolloff=7                         "在上下移动光标时,光标的上方或下方至少会保留显示的行数

set number                              "开启行号显示

set gcr=a:block-blinkon0                "禁止光标闪烁

set laststatus=2                        "总是显示状态栏

set guioptions-=l                       "禁止显示滚动条
set guioptions-=L
set guioptions-=r
set guioptions-=R

set guioptions-=m                       "禁止显示菜单和工具条
set guioptions-=T

set cursorline                          "高亮显示当前行/列
" set cursorcolumn

if (exists('+colorcolumn'))             "高亮第80列
   set colorcolumn=80
   highlight ColorColumn ctermbg=9
endif

"===============================================================================
" 排版格式设置
"===============================================================================

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""搜索括号匹配问题""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set showmatch                           "括号配对情况, 跳转并高亮一下匹配的括号

" How many tenths of a second to blink when matching brackets
set matchtime=2

set incsearch                           "开启实时搜索功能

set ignorecase                          "搜索时大小写不敏感

set smartcase                           "有一个或以上大写字母时仍大小写敏感

set hlsearch                            "高亮显示搜索结果

set wildmenu                            "vim 自身命令行模式智能补全
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""代码显示排版问题"""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
syntax enable                           "开启语法高亮功能
syntax on                               "允许用指定语法高亮配色方案替换默认方案

set smartindent                         "智能缩进
set autoindent                          "自动缩进

set shiftround                          "缩进时,取整

set expandtab                           "将制表符扩展为空格
set tabstop=4                           "设置编辑时制表符占用空格数
set shiftwidth=4                        "设置格式化时制表符占用空格数
set softtabstop=4                       "让 vim 把连续数量的空格视为一个制表符
set smarttab                            "设置该项后就可以删除一个tab了

set nowrap                              "禁止折行
set backspace=indent,eol,start          "退格键问题


set formatoptions+=m                    "如遇Unicode值大于255的文本,不必等到空格再折行

set formatoptions+=B                    "合并两行中文时,不在中间加空格
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""代码折叠"""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set foldenable
" 折叠方法
" manual    手工折叠
" indent    使用缩进表示折叠
" expr      使用表达式定义折叠
" syntax    使用语法定义折叠
" diff      对没有更改的文本进行折叠
" marker    使用标记进行折叠, 默认标记是 {{{ 和 }}}
set foldmethod=indent
set foldlevel=99
" 代码折叠自定义快捷键 <leader>zz
let g:FoldMethod = 0
map <leader>zz :call ToggleFold()<cr>
fun! ToggleFold()
    if g:FoldMethod == 0
        exe "normal! zM"
        let g:FoldMethod = 1
    else
        exe "normal! zR"
        let g:FoldMethod = 0
    endif
endfun
set nofoldenable                        "启动 vim 时关闭折叠代码


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""粘贴问题""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set pastetoggle=<F11>                   "设置按下F11时进入paste模式

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""编码问题""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set encoding=utf-8                      "设置编码
set langmenu=zh_CN.UTF-8                "设置提示为中文
" language message zh_CN.UTF-8
" 自动判断编码时,依次尝试以下编码:
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set ambiwidth=double                    "防止特殊符号无法正常显示
set helplang=cn
" Use Unix as the standard file type
set ffs=unix,dos,mac

"===============================================================================
" others 其它设置
"===============================================================================

autocmd! bufwritepost _vimrc source %   "vimrc文件修改之后自动加载, windows

autocmd! bufwritepost .vimrc source %   "vimrc文件修改之后自动加载, linux

" 自动补全配置

set completeopt=longest,menu            "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)

set wildmenu                            "增强模式中的命令行自动完成操作

set wildignore=*.o,*~,*.pyc,*.class     "Ignore compiled files

" 离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif

" 回车即选中当前项
inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>"

" In the quickfix window, <CR> is used to jump to the error under the
" cursor, so undefine the mapping there.
autocmd BufReadPost quickfix nnoremap <buffer> <CR> <CR>
" quickfix window  s/v to open in split window,  ,gd/,jd => quickfix window => open it
autocmd BufReadPost quickfix nnoremap <buffer> v <C-w><Enter><C-w>L
autocmd BufReadPost quickfix nnoremap <buffer> s <C-w><Enter><C-w>K

" command-line window
autocmd CmdwinEnter * nnoremap <buffer> <CR> <CR>


" 上下左右键的行为 会显示其他信息
inoremap <expr> <Down>     pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up>       pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr> <PageUp>   pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"

" 打开自动定位到最后编辑的位置, 需要确认 .viminfo 当前用户可写
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""高亮方案设置""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
highlight LineNr cterm=bold ctermfg=red
highlight StorageClass cterm=bold ctermfg=darkgreen
highlight Type cterm=bold ctermfg=blue
highlight LineNr cterm=bold ctermbg=black
highlight phpStructure cterm=bold ctermfg=darkred
highlight phpFunctions cterm=bold ctermfg=256
highlight Title ctermfg=blue
highlight pythonString cterm=bold ctermfg=gray
highlight pythonFunction cterm=bold
highlight pythonInclude cterm=bold ctermfg=lightblue
highlight javascriptStringS ctermfg=gray
highlight String ctermfg=gray
hi Search cterm=NONE ctermfg=darkred ctermbg=yellow cterm=reverse

以上是关于Vim基础配置的主要内容,如果未能解决你的问题,请参考以下文章

从零开始配置vim(27)——代码片段

vim代码片段插件ultisnips的使用

latex在vim中的代码片段

VIM 代码片段插件 ultisnips 使用教程

从零开始配置vim(23)——lsp基础配置

从零开始配置vim(23)——lsp基础配置