超详细 vim 配置 (with MacVim) 您所在的位置:网站首页 vim设置字体大小 超详细 vim 配置 (with MacVim)

超详细 vim 配置 (with MacVim)

2024-07-01 16:40| 来源: 网络整理| 查看: 265

MacVim 用了很久,非常喜欢 vim 编程带来的高效,清爽,hack 的感觉,感谢deepzz多年前的传道。这两天花了点时间一行一行的去查vimrc内的配置,大概弄清了每一项配置的作用,并标上注释,整理常用快捷键。

vimrc#

内容太长,放在最后 。

快捷键#

vim一些基础操作可以看下图。

我这里主要整理一些组合操作(这里主要以上面的配置为准)

快捷键操作备注Cmd e开启/关闭 侧边栏(目录树)Cmd y开启大纲Cmd+/代码注释Ctrl j/k/h/l多窗口切换Shift h/l切换缓冲区Cmd f快速搜索:CO打开上次搜索的结果:w!!用sudo权限保存文件,1/2/3/4/5/6/7/8/9/0切换tab,zz折叠行,/移除搜索高亮,sa选择全部,w保存当前文件,bd关闭当前缓冲区, 不关闭窗口,gcGoErrCheck,gbGoBuild,grGoRename,glGoLint,us修改当前文件类型的代码片段,,h显示往前可快速移动的点,,j显示往下可快速移动的点,,k显示往上可快速移动的点,,l显示往后可快速移动的点,,.显示上一次可快速移动的点,gtaaGit add,gtcgit commit,gtlgit pull,bo:BufOnly 关闭初当前Buffer外的所有Buffer快速使用该配置#curl -kSL https://raw.githubusercontent.com/razeencheng/dotfiles/master/macvim/install.sh | sh

然后打开MacVim执行 “:PluginInstall”, 不过需要先需要安装 Vundle:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim QA#

Q1. 插件安装后,关于YouCompleteMe报错。

A1. YouCompleteMe插件需要单独配置, 你可以配置你需要的语言,如golang:

cd ~/.vim/bundle/YouCompleteMe git clean -f git pull git submodule update --recursive --init ./install.py --go-completer

注意,编译之前需要先安装cmake和 python3

Q2. Cmd f / Cmd e 与MacVim系统按键冲突。

A2. 要么修改系统按键,要么修改配置。由于使用频率较高,我把系统的改了,如下。

大概4步:

找到是什么菜单占用了你的按键, 如 “Find…‘;在“系统设置” > “键盘” > ‘快捷键’ 中添加你的MacVim;修改占用菜单(如“Find…”) 为其他快捷键;回来再看看,原来的快捷键已经改了,不再冲突了。

Q3: 搜索报错 Option '*g*:*ctrlsf_ackprg*' is not defined or empty.

A3: 要安装依赖 brew install the_silver_searcher

Q4: 字体有问题。

A4: 字体推荐等宽字体,配置中使用的是CamingoCode Regular , 可以到这个项目下面去找自己喜欢的字体并下载。

.vimrc#" repo: https://github.com/razeencheng/dotfiles/macvim " email: [email protected] " 关闭vi的兼容模式(兼容模式下会让vim关闭所有的扩展,丢掉vim很多强大的功能去兼容vi) set nocompatible " filetype vim会对文件自动检测文件类型; " plugin 会在Vim的运行时环境目录下加载该类型相关的插件; " 比如为了让Vim更好的支持Python编程,需要下载一些Python相关的插件,此时就必须设置plugin为on; " indent 不同类型文件有不同的缩进方式; " 如Python就要求使用4个空格作为缩进,c使用两个tab作为缩进; " 那么indent就可以为不同文件类型选择合适的缩进方式了; " 在Vim的安装目录的indent目录下看到定义了很多缩进相关的脚本 filetype plugin indent on " rtp 即 vim runtime path " 把vim bundle加入rtp set rtp+=~/.vim/bundle/Vundle.vim " 插件开始的位置 call vundle#begin() " Vundle插件管理 Plugin 'VundleVim/Vundle.vim' " 导航目录侧边栏 Plugin 'scrooloose/nerdtree' " 使nerdtree tab标签的名称更友好 Plugin 'jistr/vim-nerdtree-tabs' " nerdtree中看git版本信息 Plugin 'Xuyuanp/nerdtree-git-plugin' " 代码自动补全(需要额外配置) Plugin 'Valloric/YouCompleteMe' " 下面两个配合 生成代码片段 Plugin 'SirVer/ultisnips' Plugin 'honza/vim-snippets' " Python自动补全 Plugin 'davidhalter/jedi-vim' " 符号自动补全 Plugin 'Raimondi/delimitMate' " 文件搜索, 快速跳转文件 Plugin 'ctrlpvim/ctrlp.vim' " 全局搜索 Plugin 'dyng/ctrlsf.vim' " 大纲式导航(右边出现的那个导航的) Plugin 'majutsushi/tagbar' " 内容搜索 Plugin 'rking/ag.vim' " 快速移动(跳转) Plugin 'Lokaltog/vim-easymotion' " 成对标签跳转 Plugin 'vim-scripts/matchit.zip' " 快速注释 Plugin 'tomtom/tcomment_vim' " 成对符号编辑(快速给词加环绕符号,例如单引号/双引号/括号/成对标签等) Plugin 'tpope/vim-surround' " 多光标操作(类似sublimetext的多光标选中) Plugin 'terryma/vim-multiple-cursors' " 语法检查(支持大部分语言) Plugin 'vim-syntastic/syntastic' " 快速对齐 Plugin 'junegunn/vim-easy-align' " Python开发插件 Plugin 'klen/python-mode' " Lua开发插件 Plugin 'xolox/vim-lua-ftplugin' " Lua缩进插件 Plugin 'raymond-w-ko/vim-lua-indent' " Go开发插件 Plugin 'fatih/vim-go' " Vue开发插件 Plugin 'posva/vim-vue' " 杂项自动加载 Plugin 'xolox/vim-misc' " 集成各种git操作 Plugin 'tpope/vim-fugitive' " gitk Plugin 'gregsexton/gitv' " git差比对 Plugin 'airblade/vim-gitgutter' " 状态栏增强显示 Plugin 'bling/vim-airline' " 配色插件(深色/浅色) Plugin 'noahfrederick/vim-hemisu' " 配色 Plugin 'tomasr/molokai' " 颜色主题 Plugin 'zaki/zazen' " 关闭全部的Buff, 除了当前的 Plugin 'vim-scripts/BufOnly.vim' " 插件结束的位置 call vundle#end() " 插件简要使用 " :PluginList - 插件列表 " :PluginInstall - 安装插件; 加!表示更新 " :PluginSearch foo - 搜索插件 foo; 加!刷新本地缓存 " :PluginClean - 移除插件; 加!不需要确认 " 对所有缓冲区中的文件启用语法高亮度 syntax on " 使用bash作为默认shell环境 set shell=bash " 定义快捷键的前缀 let mapleader = ',' " 关闭欢迎页面 set shortmess=atI "被分割窗口之間顯示空白 set fillchars=vert:/ " 保存历史命令行数 set history=1000 " 关闭swap set noswapfile " 关闭备份 set nobackup " 关闭vim bb声 set noerrorbells " 高亮当前行 set cursorline " 高亮当前列 " set cursorcolumn " 关闭鼠标 " set mouse-=a " 控制vim剪贴板 set clipboard+=unnamed " 允许在插入模式下对所有内容进行退格 set backspace=indent,eol,start " 行间距 set linespace=0 " 刷新率100ms ? set updatetime=100 " 在新Tab中打开新的缓冲区 set switchbuf=usetab,usetab " 搜索时 忽略这些文件/夹 set wildignore+=*/.git/*, \*/.hg/*,*/.svn/*, \*/cscope*,*/*.csv/, \*/*.log,*tags*,*/bin/* " 在最下面状态栏显示正在输入的命令 set showcmd " 在左下角的状态栏显示 --INSERT-- 之类的状态 set showmode " 显示行号 set number " 行号显示宽度 set numberwidth=4 " 当输入一个左括号时自动匹配右括号 set showmatch " 关闭Preview窗口 set completeopt-=preview " 增强自带的 ? 和 / 搜索功能, 并且支持更加高级的正则表达式匹配 set incsearch " 高亮搜索内容 set hlsearch " 查找忽略大小写 set ignorecase " 如果有一个大写字母,则切换到大小写敏感查找 set smartcase " 自动缩进所使用的空白长度 set shiftwidth=4 " 按下tab键,插入的是空格和tab制表符的混合 set softtabstop=4 " 空格代替Tab set expandtab " 自动缩进,新增加的行和前一行使用相同的缩进形式 set autoindent " 每一行都和前一行有相同的缩进量,同时能正确的识别出花括号,当遇},取消缩进形式 set smartindent " 默认的字符编码 set encoding=utf-8 " 自动识别文件编码 set fileencodings=utf-8,ucs-bom,gbk,gb2312,gb18030,default " 文本格式优先unix风格 set fileformats=unix,dos,mac " 文本格式化选项 " t:根据 textwidth 自动折行 " c:在(程序源代码中的)注释中自动折行,插入合适的注释起始字符 " r:插入模式下在注释中键入回车时,插入合适的注释起始字符 " q:允许使用“gq”命令对注释进行格式化 " o: 如果当前有注释,用O,o时自动插入注释 " w: 尾部白色空格代表下一行继续,非白色表示一个段落的结尾 set formatoptions+=tcroqw " 向右切分窗口 set splitright " 向下切分窗口 set splitbelow " 自动保存 set autowrite " 自动读取文件(如果文本改变,自动更新) set autoread " 始终显示状态栏(倒数第二行) set laststatus=2 " 主题设置 " GUI的一些可选参数 set guioptions='' " 背景颜色 set background=dark " 配色 terminal Color 256色 set t_Co=256 " 字体 set guifont=CamingoCode\ Regular:h18 " 主题 colorscheme molokai " colorscheme solarized " colorscheme desert " 切换buffer(文件/tab)的时候, 之前编辑的文件就只是切换到后台, 而不是关掉,还可以回切 set hidden " 自动补全的模式(显示可能匹配的列表,并使用最长的子串进行补全) set wildmode=list:longest " 快速滚动 set ttyfast " 文本折叠 " 开启折叠 set foldenable " 折叠方式(安装缩进折叠) set foldmethod=indent " 折叠级别 set foldlevel=99 " 设置折叠的快捷键 " 我这里就是 ,zz " 第一次 ,zz 折叠,再一次就展开 let g:FoldMethod = 0 map zz :call ToggleFold() fun! ToggleFold() if g:FoldMethod == 0 exe "normal! zM" let g:FoldMethod = 1 else exe "normal! zR" let g:FoldMethod = 0 endif endfun " 在Visual/Select模式下的一些成对字符插入快捷键 " 如你选择 hellworld 然后按下"号,就会成对加上" 变成 "helloworld" vmap " S" vmap ' S' vmap ` S` vmap [ S[ vmap ( S( vmap { S{ vmap } S} vmap ] S] vmap ) S) " 多个窗口 用Ctr加 jkhl切换 map j map k map h map l " 普通模式下 shift + h/l 快速切换缓冲区 nmap :bp nmap :bn " 快速切换多个标签页 " ,1 到第一个标签页 noremap 1 1gt noremap 2 2gt noremap 3 3gt noremap 4 4gt noremap 5 5gt noremap 6 6gt noremap 7 7gt noremap 8 8gt noremap 9 9gt noremap 0 :tablast " 开启相对行号 set relativenumber augroup CursorLineOnlyInActiveWindow autocmd! autocmd InsertLeave * setlocal relativenumber autocmd InsertEnter * setlocal norelativenumber autocmd BufEnter * setlocal cursorline autocmd BufLeave * setlocal nocursorline " autocmd CompleteDone *.go call OnGolangCompleteDone() augroup END function! NumberToggle() if(&relativenumber == 1) set norelativenumber number else set relativenumber endif endfunc nnoremap :call NumberToggle() " 自动记住上次位置 autocmd BufReadPost * \ if line("'\"")>0&&line("'\"")


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有