#VIM# 初阶的和进阶的vimrc文件

浏览: 2330
vim

Vim 基本配置

Vim是个强大的编辑器,在各种插件的辅助下甚至也能匹敌IDE,但也不能过分的依赖来各种插件,而忘记来Vim原本的功能与操作。Vim本身的功能很强大,学习曲线很曲折,需要我们慢慢的来学习,多多的使用。Vim自身有很多配置选项,可以在~/.vimrc中配置,从而方便我们操作。使用Vim也有一段时间来,也有了一套自己习惯好用的配置,下面列出我的基本配置。

General

一些基本配置

syntax on                       " 关键字上色
syntax enable " 语法高亮
set nu " 显示行号
set nocp " 不兼容vi
set hidden " 允许不保存切换buffer
set splitright " 新分割窗口在右边
set splitbelow " 新分割窗口在下边
set autoread " 文件在Vim之外修改过,自动重新读入
set timeoutlen=350 " 等待时间,如<leader>键后的输入
set helpheight=999 " 查看帮助文档全屏
set scrolljump=3 " 当光标离开屏幕滑动行数
set scrolloff=1 " 保持在光标上下最少行数
set showmatch " 短暂回显匹配括号
set hlsearch                    " 检索时高亮显示匹配项
set incsearch " 边输入边搜索
set ignorecase " 搜索忽略大小写
set smartcase " 智能大小写搜索

set wildmenu " 命令模式下补全以菜单形式显示
set wildmode=list:longest,full " 命令模式补全模式
set foldenable " 启动折叠
set foldmethod=marker " 设置折叠模式
set encoding=utf-8 " 编码,使汉语正常显示
set termencoding=utf-8
set fileencodings=utf-8,gb2312,gbk,gb18030

还有相关的编码问题可以参考VIM文件编码识别与乱码处理

Formatting

关于缩进

set expandtab                   " tab=空格
set tabstop=4 " tab缩进4个空格
set shiftwidth=4 " 自动缩进空格数
set softtabstop=4 " 退格删除缩进
set backspace=indent,start " 退格可删除缩进和原有字符
set autoindent " 与前一行同样等级缩进

当切割窗口显示多文件时,如果窗口大小改变,本来分布均匀的窗口不会重新调整大小,变得很难看,可以添加下面这条来配置自动调整大小。

au VimResized * exe "normal! \<c-w>="

在粘贴时候,如果前边的行带有注释符号,如#//"等时,后边的行会自动加上注释符号,很是麻烦,下面可以配置不自动添加成注释。

au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "no rm $"|endif|endif
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o

Key (re)Mappings

一些按键的重映射,很多用了真是让人上瘾,而且便捷很多,如<Esc>jj来代替,还有一些常输错的一些命令的修正,如QW等。

let mapleader=","           " 映射<leader>键到为,
nmap j gj
nmap k gk
inoremap jk <ESC>
nnoremap <silent> J :bp<CR>
nnoremap <silent> K :bn<CR>
noremap <silent><space> :set hls! hls?<CR>
noremap <silent><Leader>s :set rnu! rnu?<CR>
noremap <silent><Leader>l :set list! list?<CR>
nnoremap <Leader>c @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>

" 更方便窗口间移动
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

" 命令模式按键映射
cnoremap <C-a> <Home>
cnoremap <C-e> <End>
cnoremap <C-p> <Up>
cnoremap <C-n> <Down>

" Tab操作
nnoremap <Leader>tc :tabc<CR>
nnoremap <Leader>tn :tabn<CR>
nnoremap <Leader>tp :tabp<CR>
nnoremap <Leader>te :tabe<Space>

" 修正易错命令
command -bang -nargs=* Q q<bang>
command -bang -nargs=* Wa wa<bang>
command -bang -nargs=* WA wa<bang>
command -bang -nargs=* -complete=file W w<bang> <args>
command -bang -nargs=* -complete=file Wq wq<bang> <args>
command -bang -nargs=* -complete=file WQ wq<bang> <args>

Vim UI

因为我主要在终端使用Vim,所以一些UI的配置是针对终端的。GUI的话基本相似,把ctermbg等换成guibg等就可以了。

set t_Co=256                    " 终端显示256色
set tabpagemax=15 " 最多15个Tab
set showmode " 显示当前mode
set cursorline " 高亮当前行
set list " 显示特殊符号
set listchars=tab:›\ ,trail:•,extends:#,nbsp:.

hi clear SignColumn " 标记列背景和主题背景匹配
hi clear LineNr " 当前行列背景和主题背景匹配

hi CursorLineNr ctermfg=red
hi VertSplit ctermbg=Grey ctermfg=Grey cterm=none
hi Visual ctermbg=81 ctermfg=black cterm=none
hi Comment ctermfg=blue
hi Statement ctermfg=cyan
hi DiffAdd ctermbg=blue ctermfg=white
hi DiffDelete ctermbg=green ctermfg=none
hi DiffChange ctermbg=red ctermfg=White
hi DiffText ctermbg=yellow ctermfg=black

if has('cmdline_info')
set showcmd " 右下角显示当前操作
set ruler " 右下角显示状态说明
set rulerformat=%30(%=\:b%n%y%m%r%w\ %l,%c%V\ %P%) " 设定格式
endif

if has('statusline')
set laststatus=1
set statusline=%<%f\ " Filename
set statusline+=%w%h%m%r " Options
set statusline+=\ [%{&ff}/%Y] " Filetype
set statusline+=\ [%{getcwd()}] " Current dir
set statusline+=%=%-14.(%l,%c%V%)\ %p%% " Right aligned file nav info
endif

****************************************************************************************************************8

” =====基本配置======

filetype plugin on                        ” 自动检测文件类型并加载相应的设置

filetype indent on                        ” 自动检测文件类型并加载相应的设置

set helplang=cn                         ” 使用中文帮助文档

set autoread                            ” 默认自动加载已经修改的文件

set autowrite                           ” vim使用tag进行切换时,修改的文件被自动保存

set wildignore=*.bak,*.o,*.e,*~         ” 忽略这些文件扩展名

set browsedir=current                   ” 改变浏览的启动目录

set autochdir                            ” 自动切换当前目录为当前文件所在的目录

set cursorline                            ” 设置光标行

set equalalways                         ” 分割窗口时保持相等的宽/高

set nobackup                            ” 不产生备份文件

set nocompatible                        ” 去掉有关vi一致性模式,避免以前版本的一些bug和局限

set noswapfile                          ” 编辑时不产生交换文件

set noexpandtab                         ” 插入 tab 符号不以空格替换

set history=1000                        ” 设置冒号命令和搜索命令的命令历史列表的长度

set autoindent                            ” 设置自动缩进:即每行的缩进值与上一行相等,使用 noautoindent 取消设置

set smartindent                            ” 依据上面的格式,智能的选择对齐方式,对于类似C语言编写很有用处

set smarttab                            ” 开启新行时使用智能 tab 缩进

set nu                                    ” 自动开启行号

set expandtab                            ” 语法高亮度显示

set encoding=utf-8                        ” 设置编码自动识别, 中文引号显示

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

set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom,gbk

set ambiwidth=double

set showcmd                                ” 输入的命令显示出来,看的清楚些。

set enc=utf-8

set ignorecase                            ” 大小写无关匹配

set smartcase                            ” 只能匹配,即小写全匹配,大小写混合则严格匹配

set langmenu=zh_CN.UTF-8                ” 语言设置

syntax enable                            ” 语法高亮显示

syntax on

set filetype=c                            ” 开启支持C语法文件

set tabstop=4                            ” 不讨论制表符为8还是为4较好,这里设置(软)制表符宽度为4:

set softtabstop=4

set shiftwidth=4                        ” 设置缩进的空格数为4

set cindent                                ” 设置使用 C/C++ 语言的自动缩进方式:

set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s ” 设置C/C++语言的具体缩进方式

set showmatch                            ” 设置匹配模式,当属于一个左括号时会匹配相应的那个右括号

set vb t_vb=                            ” 去掉错误警告时的提示音

set incsearch                            ” 动态匹配查找的字符

set ruler                                ” 在Vim窗口的右下角显示当前光标位置

set hlsearch                            ” 高亮显示匹配的字符;临时关闭用:set nohlsearch

set backspace=indent,eol,start

set guioptions=t                        ” 隐藏菜单栏、工具栏、滚动条

set foldmethod=indent                   ” 代码折叠

set wildmenu                             ” 自动补全命令时候使用菜单式匹配列表

set history=400                            ” vim记住的历史操作的数量,默认的是20

set t_Co=256

if exists(“tags”)                        ” 启动vim时,如果存在tags则自动加载

    set tags=tags

endif

if &term==”xterm”

    set t_Co=8

    set t_Sb=^[[4%dm

    set t_Sf=^[[3%dm

endif

nnoremap <space> @=((foldclosed(line(‘.’)) < 0) ? ‘zc’ : ‘zo’)<CR>

推荐 1
本文由 Yuchi608 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册