" 关闭 vi 兼容模式 set nocompatible " 设置文件编码和内部编码 set fileencoding=utf8 encoding=utf8 " 禁止产生备份文件 set nobackup " 当文件在外部发生更改时,自动读取更改后的内容 set autoread " 保存文件时,禁止在文件底部添加新行 set nofixendofline " 当读取/写入文件时使用的 ,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 :call libcallnr(g:gvim_fullscreen_lib, "ToggleFullScreen", 0) inoremap :call libcallnr(g:gvim_fullscreen_lib, "ToggleFullScreen", 0)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 :write inoremap :write " 打开/关闭目录 " nerdtree.vim noremap :NERDTreeToggle " 打开/关闭日历 " calendar.vim nnoremap :call ToggleCalendar() " 打开/关闭代码结构 " tagbar.vim nnoremap :TagbarToggle " 调整当前窗口尺寸 nnoremap :vertical resize -2 nnoremap :vertical resize +2 nnoremap :resize -2 nnoremap :resize +2 inoremap :vertical resize -2a inoremap :vertical resize +2a inoremap :resize -2a inoremap :resize +2a " 打开/关闭表格模式 " vim-table-mode.vim nnoremap ttm :TableModeToggle " 打开/关闭 GitGutter " vim-gitgutter.vim nnoremap tgg :GitGutterToggle " 打开 Colorizer " colorizer.vim nnoremap tch :ColorHighlight " 关闭 Colorizer " colorizer.vim nnoremap tcc :ColorClear " 编辑配置文件 nnoremap ev :vsplit $VIM/vimfiles/config/core.vim " 使配置文件生效 nnoremap sv :source $VIM/vimfiles/config/core.vim " 新建标签页 nnoremap :tabnew inoremap :tabnew " 切换标签页 nnoremap :tabprevious inoremap :tabprevious nnoremap :tabnext inoremap :tabnext " 打开/关闭搜索高亮 nnoremap th :set nohlsearch! " 上下移动时,将长行当作断行对待 nnoremap j gj nnoremap k gk " 打开/关闭拼写检查 nnoremap ts :setlocal spell! " 跳到下一处错误 nnoremap sn ]s " 跳到上一处错误 nnoremap sp [s " 将当前词加入词典 nnoremap sa zg " 为当前错误提供可能的正确选项 nnoremap ss z= " 关闭当前文件/标签页 nnoremap q :q " 插入模式模仿 Emacs 快捷键 inoremap inoremap inoremap inoremap inoremap inoremap " 快速跳转到其他窗口 noremap j noremap k noremap l noremap h " 时间与日期展开 iab xtime =strftime("%Y-%m-%d %H:%M:%S") iab xdate =strftime("%Y-%m-%d") " ================================================ " Windows 相关 " ================================================ if has("clipboard") " 剪切 vnoremap "+x vnoremap "+x " 复制 vnoremap "+y vnoremap "+y " 粘贴 map "+gP map "+gP cmap + cmap + endif " 全选 noremap gggHG inoremap gggHG cnoremap gggHG onoremap gggHG snoremap gggHG xnoremap 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