vim小记录(六)
vim无插件版小升级
除了vim自带的插件外,在不安装其他插件的情况下,想让vim变得更加符合自己的使用习惯,所以就最近就又重新整理了无插件配置的
vimrc
,需要使用这个配置的vim的时候,使用下方命令即可调用:
vim -u ~/.vim/vimrc demo.py
其中
~/.vim/vimrc
为无插件配置保存的位置。也可以修改环境变量,设置一个别名,方便调用,在Mac上,可以将下方内容添加到
~/.zprofile
中,保存退出后,重启终端就可以使用
mvim
这个别名来启动无插件配置的vim了,如果你已经装有macvim,建议使用别的名字来命名。
alias mvim="/usr/local/bin/vim -u ~/.vim/vimrc"
这次主要是添加了tab栏的优化,显示标签序号、设置颜色高亮、绑定快捷键方便切换等等
vimrc
"-----------------------------------------------"
" 基础设置 "
"-----------------------------------------------"
set modelines=0 " 禁用模式行(安全措施)
syntax on " 语法高亮
filetype on " 开启文件类型检测
colorscheme desert
set encoding=utf-8 " 编码设置
set number " 显示行号
set relativenumber " 显示相对行号
set smartindent " 智能缩进
set autoindent " 自动对齐
set smarttab
set tabstop=4 " tab缩进
set shiftwidth=4 " 设定自动缩进为4个字符
set expandtab " 用space替代tab的输入
set splitright " 设置左右分割窗口时,新窗口出现在右侧
set splitbelow " 设置水平分割窗口时,新窗口出现在底部
set nobackup " 不需要备份
set noswapfile " 禁止生成临时文件
set autoread " 文件自动检测外部更改
set clipboard=unnamed " 共享剪切板
set nocompatible " 去除vi一致性
set ambiwidth=double " 解决中文标点显示的问题
set nowrap " 不自动折行
set mouse=a " 使用鼠标
set mousehide " 输入时隐藏光标
set sidescroll=10 " 移动到看不见的字符时,自动向右滚动是个字符
set sm! " 高亮显示匹配括号
set hlsearch " 高亮查找匹配
set cursorline " 高亮显示当前行
set termguicolors " 启用终端真色
set showmatch " 显示匹配
set ruler " 显示标尺,在右下角显示光标位置
set novisualbell " 不要闪烁
set showcmd " 显示输入的命令
set laststatus=2 " always show statusline
set showtabline=2 " always show tabline
set vb t_vb=
" 设置代码折叠---------------------------------
" set nofoldenable " 启动 vim 时关闭折叠代码
" set foldmethod=indent " 设置语法折叠
" setlocal foldlevel=99 " 设置折叠层数
" nnoremap <space> za " 用空格键来开关折叠
" 设置光标样式-------------------------------
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_SR = "\<Esc>]50;CursorShape=2\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
set completeopt=longest,menu " 自动补全配置让Vim补全菜单行为跟IDE一致
set backspace=indent,eol,start " 允许用退格键删除字符
let g:markdown_fenced_languages =['c', 'cpp', 'python', 'javascript']
set guifont=Hack_Nerd_Font_Mono:h16 " 设置字体和字体大小, 只对gui客户端起作用,终端使用需要修改终端字体和大小
" 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R
" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T
" 设置状态行-----------------------------------
" 设置状态行显示常用信息
" %F 完整文件路径名
" %m 当前缓冲被修改标记
" %m 当前缓冲只读标记
" %h 帮助缓冲标记
" %w 预览缓冲标记
" %Y 文件类型
" %b ASCII值
" %B 十六进制值
" %l 行数
" %v 列数
" %p 当前行数占总行数的的百分比
" %L 总行数
" %{...} 评估表达式的值,并用值代替
" %{"[fenc=".(&fenc==""?&enc:&fenc).((exists("+bomb") && &bomb)?"+":"")."]"} 显示文件编码
" %{&ff} 显示文件类型
set statusline=%1*%F%m%r%h%w%=\
set statusline+=%2*\ %Y\ \|\
set statusline+=%3*%{\"\".(\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\"+\":\"\").\"\"}\
set statusline+=%4*[%l:%v]\
set statusline+=%5*%p%%\ \|\
set statusline+=%6*%LL\
hi User1 cterm=none ctermfg=gray ctermbg=darkgray
hi User2 cterm=none ctermfg=darkgrey ctermbg=gray
hi User3 cterm=bold ctermfg=darkgrey ctermbg=gray
hi User4 cterm=bold ctermfg=yellow ctermbg=gray
hi User5 cterm=none ctermfg=darkgrey ctermbg=gray
hi User6 cterm=none ctermfg=darkgrey ctermbg=gray
" 设置tab栏-------------------------------------------------
" 选中的tab颜色
hi SelectTabLine term=Bold cterm=Bold ctermfg=DarkYellow ctermbg=LightGray
hi SelectPageNum cterm=None ctermfg=DarkRed ctermbg=LightGray
hi SelectWindowsNum cterm=None ctermfg=DarkCyan ctermbg=LightGray
" 未选中状态的tab
hi NormalTabLine cterm=None ctermfg=Gray ctermbg=DarkGray
hi NormalPageNum cterm=None ctermfg=Gray ctermbg=DarkGray
hi NormalWindowsNum cterm=None ctermfg=Gray ctermbg=DarkGray
" tab栏背景色
hi TabLineFill term=reverse ctermfg=5 ctermbg=7 guibg=#6c6c6c
function MyTabLine()
let s = ''
for i in range(tabpagenr('$'))
" select the highlighting
let hlTab = ''
let select = 0
if i + 1 == tabpagenr()
let hlTab = '%#SelectTabLine#'
let s ..= hlTab . '⎡%#SelectPageNum#%T' . (i + 1) . hlTab
let select = 1
let hlTab = '%#NormalTabLine#'
let s ..= hlTab . "⎡%#NormalTabLine#%T" . (i + 1) . hlTab
endif
" the label is made by MyTabLabel()
let s .= ' %<%{MyTabLabel(' . (i + 1) . ', ' . select . ')} '
"追加窗口数量
let wincount = tabpagewinnr(i + 1, '$')
if wincount > 1
if select == 1
let s .= "%#SelectWindowsNum#" . wincount
let s .= "%#NormalWindowsNum#" . wincount
endif
endif
let s .= hlTab . "⎦"
endfor
" after the last tab fill with TabLineFill and reset tab page nr
let s ..= '%#TabLineFill#%T'
" right-align the label to close the current tab page
if tabpagenr('$') > 1
let s ..= '%=%#TabLine#%999X░❨X❩'
endif
return s
endfunction
" Now the MyTabLabel() function is called for each tab page to get its label. >
function MyTabLabel(n, select)
let label = ''
let buflist = tabpagebuflist(a:n)
for bufnr in buflist
if getbufvar(bufnr, "&modified")
let label = '+'
break
endif
endfor
let winnr = tabpagewinnr(a:n)
let name = bufname(buflist[winnr - 1])
if name == ''
if &buftype == 'quickfix'
let name = '[Quickfix List]'
let name = '[No Name]'
endif
let name = fnamemodify(name, ':t')
endif
let label .= name
return label
endfunction
set tabline=%!MyTabLine()
" 设置netrw-------------------------------------
let g:netrw_banner = 0 " 设置是否显示横幅
let g:netrw_liststyle = 3 " 设置目录列表样式:树形
let g:netrw_browse_split = 4 " 在之前的窗口编辑文件
let g:netrw_altv = 1 " 水平分割时,文件浏览器始终显示在左边
let g:netrw_winsize = 20 " 设置文件浏览器窗口宽度为25%
let g:netrw_list_hide= '^\..*' " 不显示隐藏文件 用 a 键就可以显示所有文件、 隐藏匹配文件或只显示匹配文件
" 自动打开文件浏览器
" augroup ProjectDrawer
" autocmd!
" autocmd VimEnter * :Vexplore
" augroup END
nnoremap <SPACE>ft :Lexplore<CR> " 打开或关闭目录树
"-----------------------------------------------"
" 自定义功能 "
"-----------------------------------------------"
" 快捷键绑定-------------------------
let mapleader='\'
" 窗口移动快捷键
noremap <TAB>w <C-w>w
noremap <TAB><left> <C-w><left>
noremap <TAB><right> <C-w><right>
noremap <TAB><up> <C-w><up>
noremap <TAB><down> <C-w><down>
" 使用方向键切换buffer
noremap <Leader><left> :bp<CR>
noremap <Leader><right> :bn<CR>