123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- " 关闭 vi 兼容模式
- set nocompatible
- " 设置文件编码和内部编码
- set fileencoding=utf8 encoding=utf8
- " 禁止产生备份文件
- set nobackup
- " 当文件在外部发生更改时,自动读取更改后的内容
- set autoread
- " 保存文件时,禁止在文件底部添加新行
- set nofixendofline
- " 当读取/写入文件时使用的 <EOL>,Windows 默认使用 dos,Unix 和 Mac 默认使用 unix
- set fileformat=dos
- " 当创建新文件或读取文件时会尝试使用的换行规则
- set fileformats=unix,dos,mac
- " 允许在哪些地方退格(自动缩进、行尾、插入模式光标处)
- set backspace=indent,eol,start
- " 缩进空格数、Tab 代表的空格数、插入 Tab 时插入的空格数、Tab 展开(使用空格替代 Tab)
- set shiftwidth=2 tabstop=2 softtabstop=2 expandtab
- " 自动缩进,创建新行时沿用上一行的缩进
- set autoindent
- " 增量搜索,每次键入字符时进行实时匹配
- set incsearch
- " 对于多按键操作,在屏幕底部显示键入的命令
- set showcmd
- " 开启行号
- set number
- " 显示光标所在的行和列
- set ruler
- " 保存 50 个命令行内容
- set history=50
- " 禁止响铃及闪屏
- au GUIEnter * set vb t_vb=
- " 使用逗号作为映射前导符
- let mapleader = ","
- " 使用垂直窗口打开帮助内容
- autocmd FileType help wincmd L
- filetype plugin indent on
- " 如果操作系统是 Windows 32位或64位
- if has("win32")
- let g:gvim_fullscreen_lib = $VIMRUNTIME . '/../vimfiles/dll/gvimfullscreen.dll'
- " 如果操作系统是 Windows 64位
- if has("win64")
- let g:gvim_fullscreen_lib = $VIMRUNTIME . '/../vimfiles/dll/gvimfullscreen_x64.dll'
- endif
- nnoremap <F11> :call libcallnr(g:gvim_fullscreen_lib, "ToggleFullScreen", 0)<CR>
- inoremap <F11> <ESC>:call libcallnr(g:gvim_fullscreen_lib, "ToggleFullScreen", 0)<CR>a
- endif
- " 在图形化环境中运行
- if has("gui_running")
- " 去除所有图形界面元素
- set guioptions=
- " 设置窗口大小
- set lines=36 columns=128
- " 设置启动时窗口左上角的显示位置
- winpos 800 400
- " 在图形化环境使用 solarized 配色
- colorscheme solarized
- else
- " 在其他环境中使用 monokai 配色
- color monokai
- endif
- " 当支持彩色(色彩数量大于 2)且运行在图形化环境时,打开语法高亮和搜索高亮
- if &t_Co > 2 || has("gui_running")
- syntax on
- set hlsearch
- endif
- if has("autocmd")
- autocmd BufReadPost *
- \ if line("'\"") > 1 && line("'\"") <= line("$") |
- \ exe "normal! g`\"" |
- \ endif
- endif
- " 设置字体
- set guifont=Consolas:h14:cANSI:qDRAFT
- " 设置宽字符字体
- set guifontwide=Microsoft_Yahei_Mono:h14:cANSI:qDRAFT
- " 切换 Tab 代表的空格数
- function ToggleTabWidth()
- if &shiftwidth == 4
- let width = 2
- else
- let width = 4
- endif
- exe "set shiftwidth=" . width . " tabstop=" . width . " softtabstop=" . width . " expandtab"
- endfunction
- " 切换字体
- function ToggleFont()
- if &guifont == 'fixedsys'
- exec "set guifont=Consolas:h14:cANSI:qDRAFT"
- else
- exec "set guifont=fixedsys"
- endif
- endfunction
- " 打开/关闭行与列的高亮
- function ToggleCrossHighlight()
- if &cursorline == 0
- exec "set cursorline"
- exec "set cursorcolumn"
- else
- exec "set nocursorline"
- exec "set nocursorcolumn"
- endif
- endfunction
- " ================================================
- " 全局快捷键
- " ================================================
- " 保存文件
- noremap <F1> :write<CR>
- inoremap <F1> <ESC>:write<CR>
- " 打开/关闭目录
- " nerdtree.vim
- noremap <silent> <F2> :NERDTreeToggle<CR>
- " 打开/关闭日历
- " calendar.vim
- nnoremap <silent> <F3> :call ToggleCalendar()<CR>
- " 打开/关闭代码结构
- " tagbar.vim
- nnoremap <silent> <F12> :TagbarToggle<CR>
- " 调整当前窗口尺寸
- nnoremap <silent> <S-F11> :vertical resize -2<CR>
- nnoremap <silent> <S-F12> :vertical resize +2<CR>
- nnoremap <silent> <M-S-F11> :resize -2<CR>
- nnoremap <silent> <M-S-F12> :resize +2<CR>
- inoremap <silent> <S-F11> <ESC>:vertical resize -2<CR>a
- inoremap <silent> <S-F12> <ESC>:vertical resize +2<CR>a
- inoremap <silent> <M-S-F11> <ESC>:resize -2<CR>a
- inoremap <silent> <M-S-F12> <ESC>:resize +2<CR>a
- " 打开/关闭表格模式
- " vim-table-mode.vim
- nnoremap <leader>ttm :TableModeToggle<CR>
- " 打开/关闭 GitGutter
- " vim-gitgutter.vim
- nnoremap <leader>tgg :GitGutterToggle<CR>
- " 打开 Colorizer
- " colorizer.vim
- nnoremap <leader>tch :ColorHighlight<CR>
- " 关闭 Colorizer
- " colorizer.vim
- nnoremap <leader>tcc :ColorClear<CR>
- " 编辑配置文件
- nnoremap <leader>ev :vsplit $VIM/vimfiles/config/core.vim<CR>
- " 使配置文件生效
- nnoremap <silent> <leader>sv :source $VIM/vimfiles/config/core.vim<CR>
- " 新建标签页
- nnoremap <C-T> :tabnew<CR>
- inoremap <C-T> <ESC>:tabnew<CR>
- " 切换标签页
- nnoremap <C-PageUp> :tabprevious<CR>
- inoremap <C-PageUp> <ESC>:tabprevious<CR>
- nnoremap <C-PageDown> :tabnext<CR>
- inoremap <C-PageDown> <ESC>:tabnext<CR>
- " 打开/关闭搜索高亮
- nnoremap <silent> <leader>th :set nohlsearch!<CR>
- " 上下移动时,将长行当作断行对待
- nnoremap j gj
- nnoremap k gk
- " 打开/关闭拼写检查
- nnoremap <silent> <leader>ts :setlocal spell!<CR>
- " 跳到下一处错误
- nnoremap <leader>sn ]s
- " 跳到上一处错误
- nnoremap <leader>sp [s
- " 将当前词加入词典
- nnoremap <leader>sa zg
- " 为当前错误提供可能的正确选项
- nnoremap <leader>ss z=
- " 关闭当前文件/标签页
- nnoremap <silent> <leader>q :q<CR>
- " 插入模式模仿 Emacs 快捷键
- inoremap <C-F> <RIGHT>
- inoremap <C-B> <LEFT>
- inoremap <C-N> <DOWN>
- inoremap <C-P> <UP>
- inoremap <C-E> <END>
- inoremap <C-A> <HOME>
- " 快速跳转到其他窗口
- noremap <C-J> <C-W>j
- noremap <C-K> <C-W>k
- noremap <C-L> <C-W>l
- noremap <C-H> <C-W>h
- " 时间与日期展开
- iab xtime <C-R>=strftime("%Y-%m-%d %H:%M:%S")<CR>
- iab xdate <C-R>=strftime("%Y-%m-%d")<CR>
- " ================================================
- " Windows 相关
- " ================================================
- if has("clipboard")
- " 剪切
- vnoremap <C-X> "+x
- vnoremap <S-Del> "+x
- " 复制
- vnoremap <C-C> "+y
- vnoremap <C-Insert> "+y
- " 粘贴
- map <C-V> "+gP
- map <S-Insert> "+gP
- cmap <C-V> <C-R>+
- cmap <S-Insert> <C-R>+
- endif
- " 全选
- noremap <C-A> gggH<C-O>G
- inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
- cnoremap <C-A> <C-C>gggH<C-O>G
- onoremap <C-A> <C-C>gggH<C-O>G
- snoremap <C-A> <C-C>gggH<C-O>G
- xnoremap <C-A> <C-C>ggVG
- " ================================================
- " 插件
- " ================================================
- " 启用 pathogen 插件
- execute pathogen#infect()
- source $VIMRUNTIME/../vimfiles/config/calendar.vim
- source $VIMRUNTIME/../vimfiles/config/lightline.vim
- source $VIMRUNTIME/../vimfiles/config/nerdtree.vim
- source $VIMRUNTIME/../vimfiles/config/tagbar.vim
- source $VIMRUNTIME/../vimfiles/config/colorizer.vim
- source $VIMRUNTIME/../vimfiles/config/nerdcommenter.vim
- source $VIMRUNTIME/../vimfiles/config/vim-gitgutter.vim
- source $VIMRUNTIME/../vimfiles/config/vim-markdown.vim
- source $VIMRUNTIME/../vimfiles/config/vim-table-mode.vim
- source $VIMRUNTIME/../vimfiles/config/vim-fugitive.vim
- source $VIMRUNTIME/../vimfiles/config/coc.nvim.vim
|