现在的位置: 首页 > 综合 > 正文

我的Gvim配置

2013年08月21日 ⁄ 综合 ⁄ 共 6469字 ⁄ 字号 评论关闭
set nocompatible

" 设置编码
let &termencoding=&encoding
set fileencodings=ucs-bom,utf-8,cp936
set encoding=utf-8
language messages zh_CN.utf-8

"文件编码问题,+快捷键+保存
:nn <C-u> :set fileencoding=utf-8<CR>:w!<CR>
:nn <C-g> :set fileencoding=cp936<CR>:w!<CR>

"最近打开历史
map <M-;> <ESC>:MRU<CR>
":nn <M-;> <ESC>:MRU<CR>
imap <M-;> <ESC>:MRU<CR>


"colo molokai
colo peachpuff 
"切换主题
"colorscheme torte
"(global-set-key [M-q] 'kill-this-buffer) 
:nn <M-b> :colorscheme torte<CR>
:nn <M-t> :colorscheme default<CR>
:nn <M-g> :colorscheme peachpuff<CR>
:nn <M-5> :colorscheme molokai<CR>
map <M-c><M-b> :ColorSchemeExplorer <cr>

map <M-.> :NERDTree<CR><M-`>
imap <M-.> <ESC>:NERDTree<CR><M-`>

"字体
"set guifont=Courier_New:h13
set guifont=Bitstream_Vera_Sans_Mono:h12
"set guifont=Consolas:h13
map <M-1> :set guifont=*<CR>
"map <M-2> :set guifont=monaco:h14<CR>
"map <M-6> :set guifont=monaco:h11<CR>
"map <M-7> :set guifont=monaco:h12<CR>:colorscheme peachpuff<CR>
"map <M-8> :set guifont=Consolas:h13<CR>
map <M-8> :set guifont=Bitstream_Vera_Sans_Mono:h12<CR>
map <M-7> :set guifont=Bitstream_Vera_Sans_Mono:h13<CR>
map <M-9> :set guifont=Courier_New:h13<CR>
"map <M-0> :set guifont=Courier_New:h14<CR>

"光标
set gcr=n-i-v:ver20-blinkon0

set backspace=2              " 设置退格键可用
set autoindent               " 自动对齐
set ai!                      " 设置自动缩进
set smartindent              " 智能自动缩进
"set shiftwidth=4            " 换行时行间交错使用4空格
set cindent shiftwidth=4     " 自动缩进4空格
set nu!                      " 显示行号
set mouse=a                  " 启用鼠标

" 右下角显示光标位置的状态行
set ruler 

set incsearch                " 开启实时搜索功能
set hlsearch                 " 开启高亮显示结果
set ic                       "忽略大小写
"set nowrapscan               " 搜索到文件两端时不重新搜索
set wrap
set nocompatible             " 关闭兼容模式
set vb t_vb=                 " 关闭提示音
set hidden                   " 允许在有未保存的修改时切换缓冲区
set autochdir                " 设定文件浏览器目录为当前目录
set foldmethod=syntax        " 选择代码折叠类型
set foldlevel=100            " 禁止自动折叠

" 开启状态栏信息
"map <C-l> :set laststatus=2<CR>
"set laststatus=2
"set cmdheight=2              " 命令行的高度,默认为1,这里设为2
set tabstop=4                " 设置Tab键的宽度        [等同的空格个数]

"提示
imap <M-/> <C-p> 
  
"java 单行注释
map <M-p> <ESC>0i//<ESC> 
map <M-o> <ESC>0xxi  <ESC>

"设置缓存目录
"set directory=c:/TEMP_vim
"set backupdir=c:/TEMP_vim
"设置无缓存
set nobackup  
set nowritebackup
set noswapfile

"高亮
syntax enable                " 打开语法高亮
syntax on                    " 开启文件类型侦测
filetype plugin on           " 针对不同的文件类型加载对应的插件
filetype plugin indent on    " 启用自动补全
filetype indent on           " 针对不同的文件类型采用不同的缩进格式


"Toggle Menu and Toolbar
set guioptions-=m     " 隐藏菜单栏
set guioptions-=T      " 隐藏工具栏
"shift+F2显示和关闭菜单栏和工具栏
map <silent> <S-F2> :if &guioptions =~# 'T' <Bar>
        \set guioptions-=T <Bar>
        \set guioptions-=m <bar>
    \else <Bar>
        \set guioptions+=T <Bar>
        \set guioptions+=m <Bar>
    \endif<CR>

"窗口设置
if has("gui_running")
    au GUIEnter * simalt ~x  " 窗口启动时自动最大化
    winpos 200 100            " 指定窗口出现的位置,坐标原点在屏幕左上角
    set lines=31 columns=88 " 指定窗口大小,lines为高度,columns为宽度
    set showtabline=2       " 显示Tab栏
    set guitablabel=%t        "标签只显示名称"
    set tabpagemax=20
    set guioptions-=L       " 隐藏左侧滚动条
"    set guioptions-=r       " 隐藏右侧滚动条
    set guioptions-=b       " 隐藏底部滚动条
endif

"取消高亮
:nn <F6> :nohlsearch<CR>    

map <C-h> <C-w>h
map <C-l> <C-w>l
map <C-k> k
map <C-j> j
:imap <C-h> <ESC><C-w>h
:imap <C-l> <ESC><C-w>l
:imap <C-k> <ESC>k
:imap <C-j> <ESC>j
"正常模式下 tab切换和关闭
:nn <M-n> :tabnew<CR>
:nn <M-h> :tabfirst<CR>
:nn <M-l> :tablast<CR>
:nn <M-k> :tabnext<CR>
:nn <M-j> :tabpre<CR>
:nn <M-w> :q<CR>
:nn <M-q> :q!<CR>
"map <M-.> :tabnew .<CR><M-`> 
"imap <M-.> <ESC>:tabnew .<CR><M-`>
"插入模式下 tab切换和关闭
:imap <F6> <ESC>:nohlsearch<CR>
:imap <M-n> <ESC>:tabnew<CR>
:imap <M-h> <ESC>:tabfirst<CR>
:imap <M-h> <ESC>:tabfirst<CR>
:imap <M-l> <ESC>:tablast<CR>
:imap <M-k> <ESC>:tabnext<CR>
:imap <M-j> <ESC>:tabpre<CR>
:imap <M-w> <ESC>:q<CR>
:imap <M-q> <ESC> :q!<CR>

"翻页
"下翻
map <M-4> <C-f> 
imap <M-4> <ESC><C-f> 
map <M-,> <C-f> 
imap <M-,> <ESC><C-f> 
"上翻
map <M-3> <C-b>
imap <M-3> <ESC><C-b>
map <M-i> <C-b>
imap <M-i> <ESC><C-b>



"正常情况下全部选中
nmap <C-a> ggvG$

"选中模式下复制到系统剪贴板
vmap <C-c> "+y
vmap <M-c> "+y
"从系统剪贴板粘贴
nmap <C-v> "+p
nmap <M-v> "+p

"保存
map <M-s> :w<CR>
map <M-a> :wa<CR>
imap <M-s> <ESC>:w<CR>l
imap <M-a> <ESC>:wa<CR>
map <M-Space> <ESC>:w<CR>
imap <M-Space> <ESC>:w<CR>l

"失去焦点自动保存
"au FocusLost * :wa
"au FocusLost * silent! up 

"得到焦点自动保存
"au FocusGained * :wa
"au FocusGained * silent! w  
"au WinEnter *  :wa
"au WinLeave * :wa
"au TabEnter * :wa
"au TabLeave * :wa


" 读文件时自动设定当前目录为刚读入文件所在的目录
autocmd BufReadPost * cd %:p:h

"当文件在外部被修改时自动重新载入
if exists("&autoread")
    set autoread
endif


"设置与vim相关目录位置
if has("win32")
    let $VIMFILES = $VIM.'/vimfiles'
    let $V = $VIM.'/_vimrc'
else
    let $VIMFILES = $HOME.'/.vim'
    let $V = $HOME.'/.vimrc'
endif

"恢复上次阅读现场,上次读到哪了
autocmd BufWinLeave * if expand('%') != '' && &buftype == '' | mkview | endif
autocmd BufRead     * if expand('%') != '' && &buftype == '' | silent loadview | syntax on | endif


" 重启后撤销历史可用 persistent undo 
set undofile
set undodir=$VIMFILES/\_undodir
set undolevels=1000 "maximum number of changes that can be undone

"通过cmd运行本文件,适用于bat,com文件
map <F11> :!start %<CR> 
"启用cmd,并跳转到当前文件所在目录
map <M-F11> :!start<CR>



"编辑
imap <S-CR> <ESC>o
map <S-CR> <ESC>o


"设置行号
map <S-F3> :set nu!<CR>
map <M-`> :set nu!<CR>


" ======= VimWiki ======= "

" 设置编码
let g:vimwiki_w32_dir_enc = 'utf-8'

" 使用鼠标映射
let g:vimwiki_use_mouse = 1

" 不要将驼峰式词组作为 Wiki 词条
let g:vimwiki_camel_case = 0

" 声明可以在wiki里面使用的HTML标签
let g:vimwiki_valid_html_tags='b,i,s,u,sub,sup,kbd,br,hr,div,del,code,red,center,left,right,h2,h4,h5,h6,pre,script,style'

let g:vimwiki_list = [{
\ 'path': 'G:/vimwiki/path/wiki',
\ 'path_html': 'G:/vimwiki/path/html/',
\ 'html_header': 'G:/vimwiki/public/template/header.htm',
\ 'html_footer': 'G:/vimwiki/public/template/footer.htm',
\ 'diary_link_count': 5,
\ 'nested_syntaxes': {'Clang': 'c', 'C++': 'cpp', 'Lisp': 'lisp', 'Ruby': 'ruby', 'SQL': 'sql', 'Bash': 'sh', 'Vim': 'vim', 'Make': 'make', 'CMake': 'cmake', 'JS': 'javascript', 'CSS': 'css', 'HTML': 'html', 'XML': 'xml'},},
\ {
\ 'path': 'G:/vimwiki/path1/wiki',
\ 'path_html': 'G:/vimwiki/path1/html/',
\ 'html_header': 'G:/vimwiki/public/template/header.htm',
\ 'html_footer': 'G:/vimwiki/public/template/footer.htm',
\ 'diary_link_count': 5,
\ 'nested_syntaxes': {'Clang': 'c', 'C++': 'cpp', 'Lisp': 'lisp', 'Ruby': 'ruby', 'SQL': 'sql', 'Bash': 'sh', 'Vim': 'vim', 'Make': 'make', 'CMake': 'cmake', 'JS': 'javascript', 'CSS': 'css', 'HTML': 'html', 'XML': 'xml'},},
\{ 'path': 'G:/vimwiki/path2/wiki'}]

"vimwiki转换
map <S-F4> :VimwikiAll2HTML<CR>
map <F4> :Vimwiki2HTML<CR>

map <M-F8> \w\t
map <M-x> \w\t
map <M-F2> \wr
map <M-F2> \wr

map <F2> <ESC>:Renamer<CR>
imap <F2> <ESC>:Renamer<CR>

map <M-e> <ESC>:E<CR><M-`>
imap <M-e> <ESC>:E<CR><M-`>


"让taglist找到ctags
let Tlist_Ctags_Cmd="D:/win_tool/editor/Vim/ctags58/ctags"
let Tlist_Show_Menu = 1
"ctags set
set tags=tags;

" :Tlist              调用TagList
let Tlist_Show_One_File=1                    " 只显示当前文件的tags
let Tlist_Exit_OnlyWindow=1                  " 如果Taglist窗口是最后一个窗口则退出Vim
let Tlist_Use_Right_Window=0                 " 在右侧窗口中显示
let Tlist_File_Fold_Auto_Close=1             " 自动折叠
map <F7> :Tlist<CR>


"生成一个tags文件
nmap <F9> <ESC>:!ctags -R *<CR>



" Don't close window, when deleting a buffer
command! Bclose call <SID>BufcloseCloseIt()
function! <SID>BufcloseCloseIt()
   let l:currentBufNum = bufnr("%")
   let l:alternateBufNum = bufnr("#")

   if buflisted(l:alternateBufNum)
     buffer #
   else
     bnext
   endif

   if bufnr("%") == l:currentBufNum
     new
   endif

   if buflisted(l:currentBufNum)
     execute("bdelete! ".l:currentBufNum)
   endif
endfunction


" Remove the Windows ^M - when the encodings gets messed up
" 去掉
,并自动换行
noremap <M-F6> mmHmt:%s/<C-V><cr>/\r/ge<cr>'tzt'm 
"比较文件  
nnoremap <C-F2> :vert diffsplit 

" 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile *  setfiletype txt

引用的博客:

丘迟的维基世界

Ruchee的荒草园子

 

抱歉!评论已关闭.