【编辑器】Vim学习笔记

            

0x00先放几个比较好的学习资料

1.Vim入门基础 http://www.jianshu.com/p/bcbe916f97e1
2.vim配置 http://blog.csdn.net/g_brightboy/article/details/14229139
3.简明Vim练级攻略 http://coolshell.cn/articles/5426.html
4.http://blog.csdn.net/mu_zhou233/article/details/53045831

0x01然后是配置文件

字体 Mac上用Monaco 20号(Monaco字体太漂亮了太可爱了),Windows上用16号

"2017.7.20  g++ with macvim By gwj

let s:cpo_save = &cpo
set cpo&vim

colorscheme macvim
set cin

set tabstop=4
set softtabstop=4
set shiftwidth=4

set nu

set guitablabel=%M%t
set ruler
set autoindent
set smartindent
filetype on
syntax on
set showmatch
set guifont=Monaco:h20
set mouse=a
set selection=exclusive
set selectmode=mouse,key

nnoremap  :w:!g++ % -Wall -o 
nnoremap  :!./
nnoremap  :w:!g++ % -Wall -o a
nnoremap  :!./a

set printexpr=system('open\ -a\ Preview\ '.v:fname_in)\ +\ v:shell_error

let $SSH_ASKPASS = simplify($VIM . '/../../MacOS') . '/macvim-askpass'
let $SUDO_ASKPASS = $SSH_ASKPASS

let &cpo = s:cpo_save
unlet s:cpo_save
" Candy? MacOS

set number
set ruler
set tabstop=4
set shiftwidth=4
set autoindent
set smartindent
filetype on
syntax on
colorscheme solarized
set showmatch
set guifont=Monaco:h20
set mouse=a
set selection=exclusive
set selectmode=mouse,key
nnoremap  :w:!g++ % -Wall -o 
nnoremap  :!./
nnoremap  :w:!g++ % -Wall -o a
nnoremap  :!./a
"mhy12345
"Configure of Vundle
set nocompatible              " be iMproved, required
filetype off                  " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" Default Plugin
Plugin 'VundleVim/Vundle.vim'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'Valloric/YouCompleteMe'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append ! to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append ! to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append ! to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
"
" Put your non-Plugin stuff after this line
"
"Old encoding setting...
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

"Configure airline
let molokai_original=1
let g:airline_theme="molokai"
"始终显示状态栏
set laststatus=2
"打开tabline功能,方便查看Buffer和切换,省去了minibufexpl插件
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1
"设置切换Buffer快捷键"
nnoremap  :bn
nnoremap  :bp
" 关闭状态显示空白符号计数
let g:airline#extensions#whitespace#enabled = 0
let g:airline#extensions#whitespace#symbol = '!'
" 设置consolas字体"前面已经设置过
"set guifont=Consolas\ for\ Powerline\ FixedD:h11
if !exists('g:airline_symbols')
  let g:airline_symbols = {}
endif
"End

"YouCompleteMe
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'
let g:airline_powerline_fonts = 1

"Own configure
nnoremap f :YcmCompleter FixIt

function Compile()
    if &filetype == 'cpp'
        exec "!g++ % -o %< -g -Wall -Wextra -Wconversion -std=c++11"
    elseif &filetype == 'c'
        exec "!gcc % -o %< -g -Wall -Wextra -Wconversion"
    elseif &filetype == 'pas'
        exec "!fpc % -g"
    elseif &filetype == 'tex'
        exec "!xelatex '%'"
    elseif &filetype == 'java'
        exec "!javac %"
    elseif &filetype == 'scss'
        exec "!sass % > %<.css"
    endif
endfunction

function Debug()
    if &filetype == 'cpp' 
        exec "!gdb ./%<"
    elseif &filetype == 'tex'
        exec "!open './%<.pdf'"
    elseif &filetype == 'java'
        exec "!jdb %<"
    endif
endfunction

function Run()
    if &filetype == 'cpp'
        exec "!time ./%<"
    elseif &filetype == 'tex'
        exec "!open './%<.pdf'"
    elseif &filetype == 'java'
        exec "!java %<"
    elseif &filetype == 'ruby'
        exec "!ruby %"
    elseif &filetype == 'html'
        exec "!firefox %"
    elseif &filetype == 'php'
        exec "!php %"
    elseif &filetype == 'sh'
        exec "!bash %"
    endif
endfunction

set hlsearch
set mouse=a
set smartindent
set fdm=marker
set number
set tabstop=4
set softtabstop=4
set shiftwidth=4
set backspace=2
syntax on
imap jj 
map  : call Compile() 
map  : call Debug() 
map  : call Run() 
map  : ! xcodebuild 
map  : ! subl ./% 
map  : ! python3 % 
colors evening
"main command
"打开语法高亮
syntax on

"使用配色方案
colorscheme desert

"打开文件类型检测功能
filetype on

"不同文件类型采用不同缩进
filetype indent on

"允许使用插件
filetype plugin on
filetype plugin indent on

"关闭vi模式
set nocp

"与windows共享剪贴板
set clipboard+=unnamed

"取消VI兼容,VI键盘模式不易用
set nocompatible

"显示行号, 或set number
set nu

"历史命令保存行数 
set history=100 

"当文件被外部改变时自动读取
set autoread 

"取消自动备份及产生swp文件
set nobackup
set nowb
set noswapfile

"允许使用鼠标点击定位
set mouse=a

"允许区域选择
set selection=exclusive
set selectmode=mouse,key

"高亮光标所在行
set cursorline

"取消光标闪烁
set novisualbell

"总是显示状态行
set laststatus=2

"状态栏显示当前执行的命令
set showcmd

"标尺功能,显示当前光标所在行列号
set ruler

"设置命令行高度为3
set cmdheight=3

"粘贴时保持格式
set paste

"高亮显示匹配的括号
set showmatch

"在搜索的时候忽略大小写
set ignorecase

"高亮被搜索的句子
set hlsearch

"在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch

"继承前一行的缩进方式,特别适用于多行注释
set autoindent

"为C程序提供自动缩进
set smartindent

"使用C样式的缩进
set cindent

"制表符为4
set tabstop=4

"统一缩进为4
set softtabstop=4
set shiftwidth=4

"允许使用退格键,或set backspace=2
set backspace=eol,start,indent
set whichwrap+=<,>,h,l

"取消换行
set nowrap

"启动的时候不显示那个援助索马里儿童的提示
set shortmess=atI

"在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\

"光标移动到buffer的顶部和底部时保持3行距离, 或set so=3
set scrolloff=3

"设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936

"设定字体
set guifont=Courier_New:h11:cANSI
set guifontwide=新宋体:h11:cGB2312

"设定编码
set enc=utf-8
set fileencodings=ucs-bom,utf-8,chinese
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

"自动补全
filetype plugin indent on
set completeopt=longest,menu

"自动补全命令时候使用菜单式匹配列表
set wildmenu
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType java set omnifunc=javacomplete#Complet

0x03具体操作

占坑待填。

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像