Vim 个人设置 (新加cctree等插件)

这篇博客详细介绍了如何配置Vim编辑器,包括F1~F12快捷键映射、Ctags、BufExplorer、TlistToggle、NERDTree、消除多余空格和^M字符的快捷键、以及各种自定义快捷键。此外,还提到了色彩主题设置、自动缩进、搜索高亮、鼠标支持等功能,并讨论了Vim插件如CCTree、FuzzyFinder、Quickfix、OmniTags、SyntaxHighlighting的使用,增强了Vim的编辑体验和代码管理能力。
摘要由CSDN通过智能技术生成

"F1~F12快捷键映射

""{ { {

map :CCTreeLoadXRefDBFromDisk $CCTREE_DB

map :BufExplorer

nnoremap :A

map :TlistToggle

"map : LookupFile "插件中已映射

noremap :make

nnoremap :Grep

map :NERDTreeToggle

 

"消除每行后面的多余的空格

nmap :%s//s/+$//g :noh

 

"消除文件中的^M字符

nmap :%s/ //ge

"nmap mmHmn:%s/ //ge `nzt`m

"原noremap dm mmHmn:%s/ //ge `nzt`m

"mmHmn 解释 : 1.mm-->在当前行行mark m 2.H-->到该屏幕的最上面(home) 3.mn-->在最上面作标记make n

"`nzt`m 解释: 1.`n -->到标记n的位置 2.zt-->将当前行(即标记n)置顶 3.`m-->到标记m的位置

 

map :!ctags -R --c++-kinds=+p --fields=+ialS --extra=+q .

 

""}}}

"F1~F12快捷键映射

 

"非F1~F12快捷键

""{ { {

let mapleader=","

let g:mapleader=","

map svi :source ~/.vimrc

map evi :e! ~/.vimrc

nnoremap tr :Trans

vnoremap trv :TransV

 

"Quickfix 编译出错信息调试很有用

nmap cn :cn

nmap cp :cp

nmap cw :cw 10

 

 

"OmniTags.vim tags更新

map tl :OmniTagsLoad $MYTAGS_DB

map tu :OmniTagsUpdate *.c *.h

 

"fuzzyfinder.vim 模糊查找

map fb :FufBuffer

map ff :FufFile

map fd :FufDir

map fm :FufMruFile

map ft :FufTag

 

"map sb : set scrollbind

"map nsb : set noscrollbind

"nnoremap c : set cursorline! cursorcolumn!

"map ms :marks

"map dms :delm!

"noremap :FufTagWithCursorWord!

""}}}

"非F1~F12快捷键

 

"简单配置

"{ { {

 

"打开语法色彩

syntax enable

"打开语法色彩

 

"打开关键字色

syntax on

"打开关键字色

 

"侦测文件类型

filetype on

"侦测文件类型

 

"载入文件类型插件

filetype plugin on

"载入文件类型插件

 

"为特定文件类型载入相关缩进文件

filetype indent on

"为特定文件类型载入相关缩进文件

 

"设置VIM颜色主题 你可以借助插件scrollcolor.vim和color_sample_pack.vim来选择你喜爱的主题(150多个)(请参考下面插件)

"term 黑白终端的属性

"cterm 彩色终端的属性

"ctermfg 彩色终端的前景色

"ctermbg 彩色终端的背景色

"gui GUI 版本属性

"guifg GUI 版本的前景色

"guibg GUI 版本的背景色

colorscheme elflord "个人钟爱

"colorscheme morning

"colorscheme evening

"colorscheme desert

"设置VIM颜色主题 你可以借助插件scrollcolor.vim和color_sample_pack.vim来选择你喜爱的主题(150多个)(请参考下面插件)

 

"预览窗口,eg. ctr+w { 时的窗口大小

set previewheight=10

"预览窗口,eg. ctr+w { 时的窗口大小

 

"设置弹出菜单的高度

set pumheight=15

"设置弹出菜单的高度

 

"使用鼠标

set mouse=a

"使用鼠标

 

"autocmd

if has("autocmd")

autocmd BufEnter * :lchdir %:p:h

endif

"autocmd

 

"映射快捷键开始命令,缺省为'/'(已经移到上面)

"let mapleader=","

"let g:mapleader=","

"映射快捷键开始命令,缺省为'/'(已经移到上面)

 

"解决consle输出乱码

language messages zh_CN.utf-8

"解决consle输出乱码

 

"可用来改动补全时采用的方式

:set wildmode=list:full

"可用来改动补全时采用的方式

 

"可用来取得菜单式的匹配列表 高亮首个匹配

":set wildmenu "当set wildmode=list:full默认set wildmenu已启动, 但是set wildmode=longest:list时不启动

"可用来取得菜单式的匹配列表 高亮首个匹配

 

"修改一个文件后,自动进行备份,备份的文件名为原文件名加"~"后缀

"if has("vms")

" set nobackup

"else

" set backup "vim main.c 多出 main.c~文件用来保存打开前的原文件, 最后可用vimdiff main.c main.c~比较

"endif

"修改一个文件后,自动进行备份,备份的文件名为原文件名加"~"后缀

 

"写备份但关闭vim后自动删除

set writebackup

"set nowritebackup

"写备份但关闭vim后自动删除

 

"vi兼容开关

set nocp "当使用omni自动补全时,要设置

"vi兼容开关

 

"不使用swap文件

"set noswapfile

set swapfile

"不使用swap文件

 

"显示匹配的括号([{和}])

set showmatch

"显示匹配的括号([{和}])

 

"显示日期的缩写

iab xdate =strftime("%Y-%m-%d %H:%M:%S")

"显示日期的缩写

 

"关闭遇到错误时的声音提示

set noerrorbells

"关闭遇到错误时的声音提示

 

"不要闪烁

set novisualbell

"不要闪烁

 

"使用空格来替换tab

set expandtab

"set et

"使用空格来替换tab

 

"在vim编辑器下方显示命令

set showcmd

set cmdheight=1

"在vim编辑器下方显示命令

 

"当光标达到上端或下端时 翻滚的行数

set scrolljump =5

"当光标达到上端或下端时 翻滚的行数

 

"当光标达到水平极端时 移动的列数

set sidescroll =5

"当光标达到水平极端时 移动的列数

 

"当光标距离极端(上,下,左,右)多少时发生窗口滚动

set scrolloff =0

"当光标距离极端(上,下,左,右)多少时发生窗口滚动

 

"当使用vimdiff比较文件,相比较的比较文件同步滚动,但是splite分割窗口, 两个窗口也同步, 有时候挺有用的.

"set scrollbind

"set noscrollbind

"当使用vimdiff比较文件,相比较的比较文件同步滚动,但是splite分割窗口, 两个窗口也同步, 有时候挺有用的.

 

"将当前编辑文件的路径设置为当前路径

set autochdir

"将当前编辑文件的路径设置为当前路径

 

"自动读写相关

set autoread " read open files again when changed outside Vim ( 同步 )

set autowrite " write a modified buffer on each :next , ... ( 跳到另一个文件时,自动保存上个文件 )

set modified

"自动读写相关

 

"设置VIM行号

set nu

"set nonu

"设置VIM行号

 

"Tab 宽度

set ts=4

"Tab 宽度

 

"自动缩进的时候, 缩进尺寸

set sw=4

"自动缩进的时候, 缩进尺寸

 

"打开 VIM 的状态栏标尺

set ru

"打开 VIM 的状态栏标尺

 

"显示括号配对情况

set sm "smartmatch

"显示括号配对情况

 

" 开启新行时使用智能自动缩进

set smartindent

" 开启新行时使用智能自动缩进

 

" 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感

set ignorecase smartcase

" 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感

 

" 输入搜索内容时就显示搜索结果

set incsearch

" 输入搜索内容时就显示搜索结果

 

" 搜索时高亮显示被找到的文本

set hlsearch

" 搜索时高亮显示被找到的文本

 

"打开 C/C++ 风格的自动缩进 ( =a{ , gg=G 代码美化 )

set cin

"打开 C/C++ 风格的自动缩进 ( =a{ , gg=G 代码美化 )

 

"允许backspace和光标键跨越行边界 ( 不习惯 )

"set whichwrap+=<,>,h,l

"允许backspace和光标键跨越行边界 ( 不习惯 )

 

"内容多时,换行显示

"set wrap

set nowrap

"内容多时,换行显示

 

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

set shortmess=atI

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

 

"通过使用: commands命令,告诉我们文件的哪一行被改变过 ( 不习惯 )

"set report=0

"通过使用: commands命令,告诉我们文件的哪一行被改变过 ( 不习惯 )

 

"在被分割的窗口间显示空白,便于阅读 (没看到效果)

"stl:/ : 当前窗口状态栏显示'空格' ('/'转义字符)

"stlnc:- : 非当前窗口状态栏显示---

"vert:/| : 垂直分割线为|

"fold:- : 若设置折叠功能,折叠后显示---

set fillchars=stl:/ ,stlnc:-,vert:/|,fold:-,diff:-

"set fillchars=vert:/ ,stl:/ ,stlnc:/

"在被分割的窗口间显示空白,便于阅读 (没看到效果)

 

"带有如下符号的单词不要被换行分割

set iskeyword+=_,$,@,%,#,-

"带有如下符号的单词不要被换行分割

 

" 中文帮助

set helplang=cn

" 中文帮助

 

" 设定doc文档目录

let helptags=$VIMFILES.'/doc'

" 设定doc文档目录

 

" 保留历史记录

set history=500

" 保留历史记录

 

" 英文单词在换行时不被截断

set linebreak

" 英文单词在换行时不被截断

 

" 设置每行多少个字符自动换行,加上换行符

"set textwidth=80 "有时不爽

set textwidth=0 "总不换行

" 设置每行多少个字符自动换行,加上换行符

 

" 光标可以定位在没有实际字符的地方

"set ve=block

" 光标可以定位在没有实际字符的地方

 

" 短暂跳转到匹配括号的时

" set matchtime=2

" 短暂跳转到匹配括号的时

 

"多少个键被敲下后执行一次交换文件刷新

set updatecount=40 "设置敲入400个字符后执行

"多少个键被敲下后执行一次交换文件刷新

 

"交换文件刷新后的超时时间

set updatetime=50000 "50秒后刷新

":preserve "若设置的时间过长,该命令会手工的存入交换文件中.

"交换文件刷新后的超时时间

 

" When using make, where should it dump the file

set makeef=error.err

" When using make, where should it dump the file

 

"lz 如果设置本选项,执行宏,寄存器和其它不通过输入的命令时屏幕不会重画.另外,窗口标题的刷新也被推迟.要强迫刷新,使用:redraw.

"set lz "lazyredraw / 'lz' (缺省关闭)

set redraw=3000

"lz 如果设置本选项,执行宏,寄存器和其它不通过输入的命令时屏幕不会重画.另外,窗口标题的刷新也被推迟.要强迫刷新,使用:redraw.

 

"}}}

"简单配置

 

"Gui选项

"{ { {

if has("gui_running")

set guioptions-=m " 关闭菜单栏

set guioptions-=T " 关闭工具栏

set guioptions-=l " 关闭左边滚动条

set guioptions-=L " 关闭垂直分隔窗口左边滚动条

set guioptions-=r " 关闭右边滚动条

set guioptions-=R " 关闭垂直分隔窗口右边滚动条

set guifont=Monospace:12 "在Linux下设置字体的命令是:

set guicursor=a:blinkon0 "停止光标闪烁

set shell=/bin/bash

endif

"}}}

"Gui选项

 

"改变注释代码的颜色

"{ { {

hi Comment ctermfg=6

"改.c文件的c风格/* ... */注释为会灰白色

hi cComment ctermfg=LightBlue "DarkGray "DarkMagenta " guifg=Grey

"改.c文件的c++风格// ... 注释为彩色终端下为暗蓝灰色、GUI下为浅蓝色

hi cCommentL ctermfg=DarkGray "LightBlue " guifg=LightBlue

"以上可参看/usr/share/vim/vim72/syntax/c.vim中对cComment和cCommentL的定义

"}}}

"改变注释代码的颜色

 

"字符编码(多字节)

"{ { {

if has("multi_byte")

    set encoding=utf-8

set fileencodings=ucs-bom,utf-8,chinese,big5,latin1,cp936

endif

"}}}

"字符编码(多字节)

 

"设置C/C++语言的具体缩进方式 eg. switch case 缩进

""{ { {

set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s

"set cino=:4g2t0(sus

"set cino=:0g0t0(sus

" :0 -- switch 语句之下的 case 语句缩进 0 个空格

" g0 -- class,struct,等权限控制语句(public,protected,private)相对class,struct等所在的块缩进 0 个空格

" t0 -- 如果函数返回值与函数名不在同一行,则返回值缩进 0 个空格

" (sus - 当一对括号跨越多行时,其后的行缩进前面 sw 指定的距离

""}}}

"设置C/C++语言的具体缩进方式 eg. switch case 缩进

 

"C的编译和运行 " 不好用,推荐用cvim.zip插件, /rr(运行), /ra(带参数运行), /ro(输出到(buff, xterm, vim))

"{ { {

"func! CompileRunGcc()

" exec "w"

" exec "!gcc % -o %<"

" exec "! ./%<"

"endfunc

"}}}

"C的编译和运行 " 不好用,推荐用cvim.zip插件, /rr(运行), /ra(带参数运行), /ro(输出到(buff, xterm, vim))

 

"search 搜索 (visual mode)

""{ { {

"set hls " hlsearch :highlight search

"set is " incsearch :increase search

"set ic " ignorecase :ignore case when searching

"set scs " smartcase :if has upper case, ignore 'ignorecase' option

""map h *N " h to highlight all word the same to which under cursor (可以使用vim自带shift + *)

""

""basically you press * or # to search for the current selection !! Really useful

vnoremap * :call VisualSearch('f')

vnoremap # :call VisualSearch('b')

function! VisualSearch(direction) range

let l:saved_reg = @"

execute "normal! vgvy"

let l:pattern = escape(@", '///.*$^~[]')

let l:pattern = substitute(l:pattern, "/n$", "", "")

if a:direction == 'b'

execute "normal ?" . l:pattern . "^M"

else

execute "normal /" . l:pattern . "^M"

endif

let @/ = l:pattern

let @" = l:saved_reg

endfunction

"map :nohl " :press to clear hightlight search highlight

""}}}

"search 搜索 (visual mode)

 

"设置状态栏,可以显示当前文件, 字符编码, 时间等

"{ { {

"显示状态栏

set ruler

set laststatus=2

highlight statusline cterm=bold ctermfg=blue ctermbg=white

"显示状态栏

"

function! CurDir()

let curdir = substitute(getcwd(), $HOME, "~", "g")

return curdir

endfunction

 

function! CurTime()

let curtime = strftime("%m-%d %H:%M:%S")

return curtime

endfunction

"set statusline=[%n]/ %f%m%r%h/ /|/ / pwd:/ %{CurDir()}/ / /|%=/|/ %l,%c/ %p%%/ /|/ ascii=%b,hex=%b%{((&fenc==/"/")?/"/":/"/ /|/ /".&fenc)}/ /|/ %{$USER}/ @/ %{hostname()}/

"set statusline=[%n]/ %F%m%r%h/ /|/ / pwd:/ %{CurDir()}/ / /|%=/|/ %l,%c/ %p%%/ /|/ ascii=%b,hex=%B%{((&fenc==/"/")?/"/":/"/ /|/ /".&fenc)}/ /|

"使用%F就不需要使用自定义函数CurDir()

"set statusline=[%n]/ /|/ %F%m%r%h/ /|%=/|/ %l,%c/ %p%%/ /|/ ascii=%b,hex=%B%{((&fenc==/"/")?/"/":/"/ /|/ /".&fenc)}/ /|/ / %{CurTime()}/ /|

set statusline=[%n]/ /|/ %f%m%r%h/ /|%=/|/ %c/ /|/ ascii=%b,hex=%B%{((&fenc==/"/")?/"/":/"/ /|/ /".&fenc)}/ /|/ %{CurTime()}/ /|

"状态行显示内容

" %f 只显示名字不显示路径

" %F 当前文件名

" %m 当前文件修改状态

" %r 当前文件是否只读

" %Y 当前文件类型

" %{&fileformat} 当前文件编码

" %b 当前光标处字符的 ASCII 码值

" %B 当前光标处字符的十六进制值

" %l 当前光标行号

" %c 当前光标列号

" %V 当前光标虚拟列号 (根据字符所占字节数计算)

" %p 当前行占总行数的百分比

" %% 百分号

" %L 当前文件总行数

"}}}

"设置状态栏,可以显示当前文件, 字符编码, 时间等

 

"设置标题栏,可以显示文件名等

"{ { {

if has('title') && (has('gui_running') || &title)

set titlestring=

set titlestring+=%f/ "文件名

set titlestring+=%h%m%r%w "标记符

set titlestring+=/ -/ %{v:progname} "程序名

endif

"}}}

"设置标题栏,可以显示文件名等

 

"当前行(列)高亮显示

"{ { {

set cursorline

set cursorcolumn

" ctermfg : red(1) yellow(2) blue green grey brown cyan magenta 数字

"hi CursorLine term=reverse cterm=reverse ctermbg=darkred ctermfg=black guibg=blue guifg=white

"hi CursorLine term=none cterm=reverse ctermbg=Magenta ctermfg=DarkGray "guibg=blue guifg=white

"hi CursorLine term=none cterm=reverse ctermbg=Cyan ctermfg=DarkGray "guibg=blue guifg=white

"若你的背景是黑色且同时装了cctree.vim 这里设置最好将ctermbg=8 ctermfg=none 注释掉

hi CursorLine term=none cterm=underline "ctermbg=8 ctermfg=none "guibg=blue guifg=white

hi CursorColumn term=none cterm=bold ctermbg=none ctermfg=Magenta "guibg=darkgrey guifg=white

"nnoremap c : set cursorline! cursorcolumn!

"set cursorline

"au! Cursorhold * exe 'match CurrentLine //%' . line('.') . 'l.*/'

"set ut=100

"}}}

"当前行(列)高亮显示

 

"单行或多行注释 "也可以使用cvim.zip插件来完成注

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值