我的VIM.rc


""""""""""""""""""""""""""""""""""""""""""""""
" => General
""""""""""""""""""""""""""""""""""""""""""""""
" Set how many lines of history VIM has to remermber
set history=700 " Enable filetype plugins
filetype plugin on
filetype indent on " Set to auto read when a file is changed from the outside
set autoread " With a map leader it's possible to do extra key combinations
" like <leader>w saves the current file
let mapleader=","
let g:mapleader="," "Why a extra 'g:mapleader' variable, after 'mapleader' " Fast saving
nmap <leader>w :w!<cr> " Ignore case when searching
set ignorecase " equivalent to '\ckeyword' when searching '\c' means case-ignored """"""""""""""""""""""""""""""""""""""""""""""
" ==> set encoding and fileformats
""""""""""""""""""""""""""""""""""""""""""""""
" set UTF8 as standard encoding and en_US as the standard language
set encoding=utf8 " 解决中文乱码问题
let &termencoding=&encoding " file encoding, especially 'character encoding'
" 简体中文
set fileencodings=ucs-bom,utf-8,gb2312,cp936,big5,shift-jis,euc-jp,euc-kr,latin1,chinese if has ("win32")
set fileencoding=chinese
else
set fileencoding=utf8
endif " Use Unix as the standard file type
set ffs=unix,dos,mac " 处理 consle/command line 乱码
language messages zh_CN.utf-8 if has("win32")
"处理菜单及右键菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
endif """"""""""""""""""""""""""""""""""""""""""""""
" ==> Function *MySys* : Detect Opertaring System Platform """"""""""""""""""""""""""""""""""""""""""""""
function! MySys()
if has("win32")
return 'windows'
else
return 'linux'
endif
endfunction """"""""""""""""""""""""""""""""""""""""""""""
"" Define function SwitchToBuf(filename) """"""""""""""""""""""""""""""""""""""""""""""
function! SwitchToBuf(filename)
"let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "")
" find in current tab
let bufwinnr = bufwinnr(a:filename)
if bufwinnr != -1
exec bufwinnr . "wincmd w"
return
else
" find in each tab
tabfirst
let tab = 1
while tab <= tabpagenr("$")
let bufwinnr = bufwinnr(a:filename)
if bufwinnr != -1
exec "normal " . tab . "gt"
exec bufwinnr . "wincmd w"
return
endif
tabnext
let tab = tab + 1
endwhile
" not exist, new tab
exec "tabnew " . a:filename
endif
endfunction """"""""""""""""""""""""""""""""""""""""""""""
"Fast edit vimrc """"""""""""""""""""""""""""""""""""""""""""""
if MySys() == 'linux'
"Fast reloading of the .vimrc
map <silent> <leader>ss :source ~/.vimrc<cr>
"Fast editing of .vimrc
map <silent> <leader>ee :call SwitchToBuf("~/.vimrc")<cr>
"When .vimrc is edited, reload it
"autocmd! bufwritepost .vimrc source ~/.vimrc
elseif MySys() == 'windows'
" Set helplang
set helplang=cn
"Fast reloading of the _vimrc
"Not in Cygwin environment
map <silent> <leader>ss :source C:/Program\ Files/Vim/_vimrc<cr>
"Fast editing of _vimrc
"Not in Cygwin environment
map <silent> <leader>ee :call SwitchToBuf("C:/Program\ Files/Vim/_vimrc")<cr>
"When _vimrc is edited, reload it
"autocmd! bufwritepost _vimrc source ~/_vimrc " What does the line mean?
endif set nocompatible """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ==> For Windows version
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if MySys() == 'windows'
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
endif set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
if empty(&shellxquote)
let l:shxq_sav = ''
set shellxquote&
endif
let cmd = '"' . $VIMRUNTIME . '\diff"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
if exists('l:shxq_sav')
let &shellxquote=l:shxq_sav
endif
endfunction """"""""""""""""""""""""""""""""""""""""""""""
" => Colors and fonts
""""""""""""""""""""""""""""""""""""""""""""""
syntax enable
syntax on set t_Co=256 "number of Colors"
set background=dark " This may not effect in VIM; It's background will be white, though.
" colorscheme desert
colorscheme molokai set number " hilight function name
autocmd BufNewFile,BufRead * :syntax match cfunctions "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
autocmd BufNewFile,BufRead * :syntax match cfunctions "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1 hi cfunctions ctermfg=81 "(这一行就是给函数名加颜色的) """"""""""""""""""""""""""""""""""""""""""""""
" change color in Gvim
""""""""""""""""""""""""""""""""""""""""""""""
if has("gui_running") endif """"""""""""""""""""""""""""""""""""""""""""""
" ==> Change color in Normal Vim
""""""""""""""""""""""""""""""""""""""""""""""
if !has("gui_running")
highlight Normal ctermfg=grey ctermbg=black "Set Vim's background color and foreground color
endif " set cursorline && higtligt current line
set cursorline
:hi CursorLine cterm=underline " ctermbg=gray ctermfg=white guibg=gray guifg=white ""highlight currentline-horizontal
" :hi CursorColumn cterm=NONE ctermbg=darkred ctermfg=white guibg=darkred guifg=white
" :nnoremap <Leader>c :set cursorline! cursorcolumn!<CR> """"""""""""""""""""""""""""""""""""""""""""""
" => Text, tab and indent related
""""""""""""""""""""""""""""""""""""""""""""""
" Use spaces instead of tabs
"set expandtab "Not good for Makefile filetype " Be smart when using tabs ;)
set smarttab " 1 tab == 4 space keys
set shiftwidth=4
set tabstop=4 set ai " Auto indent
set si "Smart indent
set wrap " Wrap lines """"""""""""""""""""""""""""""""""""""""""""""
" => Status line
""""""""""""""""""""""""""""""""""""""""""""""
" Always show the status line and row=2; One is statusline ,second is the
" command line
set laststatus=2 " Format the status line
"set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %1
set statusline=[%F]%y%r%m%*%=[%{&fileencoding}][Line:%l/%L,Column:%c][%p%%] set ruler " 在编辑过程中,在右下角显示光标位置的状态行 "--------------------------------------------------------------------------------
" 窗口操作的快捷键
"--------------------------------------------------------------------------------
nmap wv <C-w>v " 垂直分割当前窗口
nmap wc <C-w>c " 关闭当前窗口
nmap ws <C-w>s " 水平分割当前窗口 "--------------------------------------------------------------------------------
" close Gvim's toolbar, menu bar, scroll bar
"--------------------------------------------------------------------------------
if has("gui_running")
set guioptions-=m "remove menu bar
set guioptions-=T "remove tool bar
set guioptions-=r "remove right-hand scroll bar
set guioptions-=l "remove left-hand scroll bar
endif """"""""""""""""""""""""""""""
" Tag list (ctags)
""""""""""""""""""""""""""""""
if MySys() == "windows" "设定windows系统中ctags程序的位置
let Tlist_Ctags_Cmd = 'ctags'
elseif MySys() == "linux" "设定linux系统中ctags程序的位置
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
endif let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口 map <silent> <F3> :TlistToggle<cr> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Nerd Tree
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:NERDTreeWinPos = "left" "在左侧
let NERDTreeShowHidden=0
let NERDTreeIgnore = ['\.pyc$', '__pycache__']
let g:NERDTreeWinSize=35 " open and close NERDTREEWINDOW
map <leader>nn :NERDTreeToggle<cr>
map <silent> <F2> :NERDTreeToggle<cr>
map <leader>nb :NERDTreeFromBookmark
map <leader>nf :NERDTreeFind<cr> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Vimgrep, Quickfix, Makeprg
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
nmap <leader>cn :cn<cr>
nmap <leader>cp :cp<cr>
nmap <leader>cw :cw 10<cr>
" 编译后,如有错误则打开quickfix窗口。(光标仍停留在源码窗口)
" If error occur after compiling, then the quickfix window is opened automatically.
" the cursor is still in the source window.
"
" 注意:需要开启netsting autocmd
" Note: netsting autocmd should be opened.
autocmd QuickFixCmdPost [^l]* nested cwindow
autocmd QuickFixCmdPost l* nested lwindow " 在我的vimrc中,定义下面的键映射,利用它可以在当前文件中快速查找光标下的单词
nmap <leader>lv :lv /<c-r>=expand("<cword>")<cr>/ %<cr>:lw<cr>

我的VIM.rc的更多相关文章

  1. vim.rc配置(deepin)

    set nocompatible " be iMproved, requiredfiletype off " required " set the runtime pat ...

  2. iconv内容,convmv文件名,unix2dos,dos2unix文件格式转换,od/cut/wc/dd/diff/uniq/nice/du等命令,linux文件名乱码,文件名,文件内容,vim编码设置

    1.enconv文件名编码转换,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下 enconv -L zh_CN -x UTF-8 filename enconv -L GB2312 -x  ...

  3. 大神的vim配置

    大神的vim配置,O(∩_∩)O spf13-vim : Steve Francia's Vim Distribution __ _ _____ _ ___ _ __ / _/ |___ / __ _ ...

  4. vim配置python编程环境及YouCompleteMe的安装教程

    python号称人工智能语言,现在可算大热,这篇博客将介绍如何用vim打造一款自己专属的python编程环境. step1 由于安装YouCompleteMe需要vim8.0及以上版本,所以得安装使用 ...

  5. linux基础之vim编辑器

    vi : Visual Interface vim : VI Improved : VI的基础加上一些有用的插件 vim编辑器: 文本编辑器, 字处理器, 全屏编辑器, 模式化编辑器 vim的模式有三 ...

  6. vim basic

    1.基本用法 1.1.编辑模式 1.2.底行模式 1.3.环境配置 1.4.使用时发现的 2.编辑多个文档 3.选项 1.基本用法 1.1.编辑模式 插入 插入命令 插入位置 i 光标左侧 a 光标右 ...

  7. kubernetes听云实战发布版

    ➠更多技术干货请戳:听云博客 听云线上使用k8s已经有一段时间了,下面对一些听云使用过程中的问题进行一些梳理,包括架构设计,安装部署和后期维护. 目录结构如下: 下面进入正题: 我们以听云系统的一个报 ...

  8. linux的“自动化”

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  9. linux内核增加系统调用--Beginner‘s guide

    Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. ...

随机推荐

  1. inferred 和 freefrom

    “Inferred” is the default setting for storyboards and it means the scene will show a navigation bar ...

  2. iOS安全系列之一:HTTPS (轉載)

    如何打造一个安全的App?这是每一个移动开发者必须面对的问题.在移动App开发领域,开发工程师对于安全方面的考虑普遍比较欠缺,而由于iOS平台的封闭性,遭遇到的安全问题相比于Android来说要少得多 ...

  3. 获取Application中的spring容器

    方式1: ApplicationContext ac = (ApplicationContext) invocation.getInvocationContext().getApplication() ...

  4. ajax请求,请求头是provisional are shown。请求未发送出去

    问题: ajax请求,请求没成功.ajax请求没有发送出去. 查看network,看到请求头处:Provisional headers are shown. 原因: 搜索了一下,网上说了几个原因. 1 ...

  5. [C语言(VC)] 打造自己的键盘记录器 (zaroty)

    说起键盘记录,想必很多朋友都用过网上流传的一些键盘记录软件吧,但是有没有想过自己写一个呢?也许你会想:会不会很复杂啊?我可以很负责的告诉你,写键盘记录是很简单的.你所需要的仅仅是懂得一些C语言的DLL ...

  6. URL和DNS解析

    以下内容摘自<Go Web编程>,介绍的通俗易懂. 我们浏览网页都是通过URL访问的,那么URL到底是怎么样的呢? URL(Uniform Resource Locator)是“统一资源定 ...

  7. MongoDB入门简单介绍

    有关于MongoDB的资料如今较少,且大多为英文站点,以上内容大多由笔者翻译自官网,请翻译或理解错误之处请指证.之后笔者会继续关注MongoDB,并翻译“Developer Zone”和“Admin ...

  8. Models

    Models Models control the data source, they are used for collecting and issuing data, this could be ...

  9. Maven项目中如何添加日志

  10. Xcode常用快捷键总结

    Xcode常用快捷键 Xcode窗口快捷键 其他补充: 编译代码: command + B 将代码翻译为计算机能够识别的语言(0/1) 调试Xcode中程序: command + R 折叠与展开方法代 ...