Last active
September 29, 2024 14:48
-
-
Save keelii/1aab5f9aa5b47afa651c7fc84b8e9875 to your computer and use it in GitHub Desktop.
vimrc for window
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" ------------------------------ | |
" Name: vimrc for windows | |
" Author: keelii | |
" Email: keeliizhou@gmail.com | |
" ------------------------------ | |
" Startup {{{ | |
filetype indent plugin on | |
augroup vimrcEx | |
au! | |
autocmd FileType text setlocal textwidth=78 | |
augroup END | |
" vim 文件折叠方式为 marker | |
augroup ft_vim | |
au! | |
autocmd FileType vim setlocal foldmethod=marker | |
" 打开文件总是定位到上次编辑的位置 | |
autocmd BufReadPost * | |
\ if line("'\"") > 1 && line("'\"") <= line("$") | | |
\ exe "normal! g`\"" | | |
\ endif | |
augroup END | |
augroup END | |
" }}} | |
" General {{{ | |
set nocompatible | |
set nobackup | |
set noswapfile | |
set history=1024 | |
set autochdir | |
set whichwrap=b,s,<,>,[,] | |
set nobomb | |
set backspace=indent,eol,start whichwrap+=<,>,[,] | |
" Vim 的默认寄存器和系统剪贴板共享 | |
set clipboard+=unnamed | |
" 设置 alt 键不映射到菜单栏 | |
set winaltkeys=no | |
" }}} | |
" Lang & Encoding {{{ | |
set fileencodings=utf-8,gbk2312,gbk,gb18030,cp936 | |
set encoding=utf-8 | |
set langmenu=zh_CN | |
let $LANG = 'en_US.UTF-8' | |
"language messages zh_CN.UTF-8 | |
" }}} | |
" GUI {{{ | |
colorscheme Tomorrow-Night | |
source $VIMRUNTIME/delmenu.vim | |
source $VIMRUNTIME/menu.vim | |
set cursorline | |
set hlsearch | |
set number | |
" 窗口大小 | |
set lines=35 columns=140 | |
" 分割出来的窗口位于当前窗口下边/右边 | |
set splitbelow | |
set splitright | |
"不显示工具/菜单栏 | |
set guioptions-=T | |
set guioptions-=m | |
set guioptions-=L | |
set guioptions-=r | |
set guioptions-=b | |
" 使用内置 tab 样式而不是 gui | |
set guioptions-=e | |
" set nolist | |
set listchars=trail:·,extends:>,precedes:< | |
set guifont=Inconsolata:h12:cANSI | |
set statusline=%f | |
set statusline+=%m | |
set statusline+=\ %{fugitive#head()} | |
set statusline+=%= | |
set statusline+=%{''.(&fenc!=''?&fenc:&enc).''} | |
set statusline+=/ | |
set statusline +=%{&ff} "file format | |
set statusline+=\ -\ " Separator | |
set statusline+=%l/%L | |
set statusline+=[%p%%] | |
set statusline+=\ -\ " Separator | |
set statusline +=%1*\ %y\ %* | |
" }}} | |
" Format {{{ | |
set autoindent | |
set smartindent | |
set tabstop=4 | |
set shiftwidth=4 | |
set softtabstop=4 | |
set expandtab | |
set foldmethod=indent | |
syntax on | |
" }}} | |
" Keymap {{{ | |
let mapleader="," | |
nmap <leader>s :source $MYVIMRC<cr> | |
nmap <leader>e :e $MYVIMRC<cr> | |
nmap <leader>tn :tabnew<cr> | |
nmap <leader>tc :tabclose<cr> | |
nmap <leader>th :tabp<cr> | |
nmap <leader>tl :tabn<cr> | |
" 移动分割窗口 | |
nmap <C-j> <C-W>j | |
nmap <C-k> <C-W>k | |
nmap <C-h> <C-W>h | |
nmap <C-l> <C-W>l | |
" 正常模式下 alt+j,k,h,l 调整分割窗口大小 | |
nnoremap <M-j> :resize +5<cr> | |
nnoremap <M-k> :resize -5<cr> | |
nnoremap <M-h> :vertical resize -5<cr> | |
nnoremap <M-l> :vertical resize +5<cr> | |
" 插入模式移动光标 alt + 方向键 | |
inoremap <M-j> <Down> | |
inoremap <M-k> <Up> | |
inoremap <M-h> <left> | |
inoremap <M-l> <Right> | |
" IDE like delete | |
inoremap <C-BS> <Esc>bdei | |
nnoremap vv ^vg_ | |
" 转换当前行为大写 | |
inoremap <C-u> <esc>mzgUiw`za | |
" 命令模式下的行首尾 | |
cnoremap <C-a> <home> | |
cnoremap <C-e> <end> | |
nnoremap <F2> :setlocal number!<cr> | |
nnoremap <leader>w :set wrap!<cr> | |
imap <C-v> "+gP | |
vmap <C-c> "+y | |
vnoremap <BS> d | |
vnoremap <C-C> "+y | |
vnoremap <C-Insert> "+y | |
imap <C-V> "+gP | |
map <S-Insert> "+gP | |
cmap <C-V> <C-R>+ | |
cmap <S-Insert> <C-R>+ | |
exe 'inoremap <script> <C-V>' paste#paste_cmd['i'] | |
exe 'vnoremap <script> <C-V>' paste#paste_cmd['v'] | |
" 打开当前目录 windows | |
nmap <silent> <leader>ex :!start explorer %:p:h<CR> | |
" 打开当前目录CMD | |
nmap <silent> <leader>cmd :!start cmd /k cd %:p:h<cr> | |
" 打印当前时间 | |
nmap <F3> a<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc> | |
let NERDTreeBookmarksFile = $VIM . '/NERDTreeBookmarks' | |
" 复制当前文件/路径到剪贴板 | |
nmap ,fn :let @*=substitute(expand("%"), "/", "\\", "g")<CR> | |
nmap ,fp :let @*=substitute(expand("%:p"), "/", "\\", "g")<CR> | |
"设置切换Buffer快捷键" | |
nnoremap <C-left> :bn<CR> | |
nnoremap <C-right> :bp<CR> | |
" }}} | |
" Plugin {{{ | |
filetype off | |
set rtp+=$VIM/vimfiles/bundle/Vundle.vim | |
call vundle#begin('$VIM/vimfiles/bundle') | |
" ----- Vundle ----- {{{ | |
Plugin 'VundleVim/Vundle.vim' | |
" }}} | |
" ----- NerdTree ----- {{{ | |
Plugin 'scrooloose/nerdtree' | |
let NERDTreeIgnore=['.idea', '.vscode', 'node_modules', '*.pyc'] | |
let NERDTreeBookmarksFile = $VIM . '/NERDTreeBookmarks' | |
let NERDTreeMinimalUI = 1 | |
let NERDTreeBookmarksSort = 1 | |
let NERDTreeShowLineNumbers = 0 | |
let NERDTreeShowBookmarks = 1 | |
let g:NERDTreeWinPos = 'right' | |
let g:NERDTreeDirArrowExpandable = '▸' | |
let g:NERDTreeDirArrowCollapsible = '▾' | |
nmap <leader>n :NERDTreeToggle <cr> | |
if exists('g:NERDTreeWinPos') | |
autocmd vimenter * NERDTree D:\repo | |
endif | |
" }}} | |
" ----- Multiple-cursors ----- {{{ | |
Plugin 'terryma/vim-multiple-cursors' | |
" }}} | |
" ----- Tabular ----- {{{ | |
Plugin 'godlygeek/tabular' | |
" }}} | |
" ----- Markdown ----- {{{ | |
Plugin 'plasticboy/vim-markdown' | |
" }}} | |
" ----- Airline ----- {{{ | |
"Plugin 'vim-airline/vim-airline' | |
"Plugin 'vim-airline/vim-airline-themes' | |
"set laststatus=2 | |
"if !exists('g:airline_symbols') | |
"let g:airline_symbols = {} | |
"endif | |
"let g:airline_theme='tomorrow' | |
"let g:airline_powerline_fonts = 1 | |
"let g:Powerline_symbols='fancy' | |
" let g:airline_symbols.branch = '' | |
" let g:airline_left_sep = '»' | |
" let g:airline_right_sep = '«' | |
"let g:airline#extensions#branch#enabled = 1 | |
"let g:airline#extensions#branch#vcs_priority = ["git", "mercurial"] | |
" let g:airline_mode_map = { | |
" \ 'n' : 'N', | |
" \ 'i' : 'I', | |
" \ 'v' : 'V', | |
" \ } | |
" let g:airline#extensions#tabline#enabled = 1 | |
" }}} | |
" ----- Ctrlp ----- {{{ | |
Plugin 'kien/ctrlp.vim' | |
let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10,results:10' | |
set wildignore+=*\\.git\\*,*\\tmp\\*,*.swp,*.zip,*.exe,*.pyc | |
" }}} | |
" ----- Nerdcommenter ----- {{{ | |
Plugin 'scrooloose/nerdcommenter' | |
" }}} | |
" ----- Emmet ----- {{{ | |
Plugin 'mattn/emmet-vim' | |
" }}} | |
" ----- SnipMate ----- {{{ | |
Plugin 'MarcWeber/vim-addon-mw-utils' | |
Plugin 'tomtom/tlib_vim' | |
Plugin 'garbas/vim-snipmate' | |
" Replace your repo | |
Plugin 'keelii/vim-snippets' | |
" Allow for vimrc re-sourcing | |
let g:snipMate = get(g:, 'snipMate', {}) | |
" }}} | |
" ----- Fugitive ----- {{{ | |
Plugin 'tpope/vim-fugitive' | |
" }}} | |
" ----- Neocomplete ----- {{{ | |
Plugin 'Shougo/neocomplete.vim' | |
let g:acp_enableAtStartup = 0 | |
" Use neocomplete. | |
let g:neocomplete#enable_at_startup = 1 | |
" Use smartcase. | |
let g:neocomplete#enable_smart_case = 1 | |
let g:neocomplete#enable_auto_select = 1 | |
" Enable snipMate compatibility feature. | |
let g:neosnippet#enable_snipmate_compatibility = 1 | |
" Tell Neosnippet about the other snippets | |
let g:neosnippet#snippets_directory=$VIM . '/vimfiles/bundle/vim-snippets/snippets' | |
" Enable omni completion. | |
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS | |
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags | |
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS | |
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete | |
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags | |
if !exists('g:neocomplete#sources#omni#input_patterns') | |
let g:neocomplete#sources#omni#input_patterns = {} | |
endif | |
" }}} | |
filetype on | |
call vundle#end() | |
" }}} | |
" Function {{{ | |
" Remove trailing whitespace when writing a buffer, but not for diff files. | |
" From: Vigil | |
" @see http://blog.bs2.to/post/EdwardLee/17961 | |
function! RemoveTrailingWhitespace() | |
if &ft != "diff" | |
let b:curcol = col(".") | |
let b:curline = line(".") | |
silent! %s/\s\+$// | |
silent! %s/\(\s*\n\)\+\%$// | |
call cursor(b:curline, b:curcol) | |
endif | |
endfunction | |
autocmd BufWritePre * call RemoveTrailingWhitespace() | |
" }}} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I really love your gvim setting ,If I have some question about this ,would you mind being my expert ?