Vim 插键及配置
如果你觉得这个页面广告太多,欢迎移步博客阅读:Vim 插键及配置
编辑器之神 —— Vim
平日使用vim经常编辑文件,想想使用时的痛点,决定研究一下插件的使用。
Vim的扩展通常也被成为bundle或插件。
软件版本:
- Mac OS X 10.14.1
- vim 8.1
插件安装-Vundle
众多文章中都提到Vundle,那我就选用它好了!
有一个 Vim 的插键网站,专门有相关插键的配置介绍:VimAwesome
1.将Vundle下载到本地,后面下载的插件也将会下载到~/.vim/bundle
路径下。
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
2.插件配置,将如下的内容粘贴到~/.vimrc
的顶部(前提是,你本身.vimrc
里一开始没有什么其他内容)。
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')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
" Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
" Plugin 'L9'
" Git plugin not hosted on GitHub
" Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
" Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
" Plugin 'ascenator/L9', {'name': 'newL9'}
" 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
3.安装插件
将需要安装的插键放入.vimrc
文件中即可,例如:
Plugin 'scrooloose/nerdtree'
"Plugin 'scrooloose/nerdtree' " 如果暂时不启用,就将该插件注释掉
打开vim,然后输入:
vim # 打开 vim
:PluginInstall
:PluginList # 查看已安装插键列表
4.升级与卸载插件
# 注释下面这段话
# Plugin 'Valloric/YouCompleteMe'
然后
:PluginUpdate # 这个命令本身可以一键升级所有插件
:PlugginClean
参考:
5.帮助文档
:h vundle
NERDTree
Plugin 'scrooloose/nerdtree'
"F2开启和关闭树"
map <F2> :NERDTreeToggle<CR>
let NERDTreeChDirMode=1
"显示书签"
let NERDTreeShowBookmarks=1
"设置忽略文件类型"
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
"窗口大小"
let NERDTreeWinSize=25
python-mode
Plugin 'klen/python-mode' " https://vimawesome.com/plugin/python-mode
编写 Python 文件保存时,就会进行语法检查了:
let g:pymode_rope = 1
let g:pymode_rope_completion = 1
let g:pymode_rope_completion_bind = '<C-p>' "为了自动补全有效,需要将 set paste 设置不启用
let g:pymode_rope_goto_definition_bind = '<C-c>g'
let g:pymode_python = 'python' " 默认检查 Python2
"Autofix PEP8 errors
nnoremap <leader>f :PymodeLintAuto<CR>
快捷键:
K 显示内置函数文档
<leader>r 运行 python 文件 # let mapleader=", " " 设置 leader 为空格,那么`,+r`就可以运行 python 文件了
参考:
- 油管-python-mode
- Can't get the jedi-vim plugin to work 解决了 python-mode 不自动补全的问题
- python-mode/doc/pymode.txt
vim-airline
一个状态栏美化工具,颜控必备。附带功能可以一目了然的区分各种编辑状态。
Plugin 'vim-airline/vim-airline' "https://github.com/vim-airlin e/vim-airline
Plugin 'vim-airline/vim-airline-themes' " https://github.com/v im-airline/vim-airline-themes https://github.com/vim-airline/vi m-airline/wiki/Screenshots
To use solarized dark, set :AirlineTheme solarized and add the following to your .vimrc: let g:airline_solarized_bg='dark'
配置:
let g:airline_powerline_fonts = 1
let g:airline_theme='deus'
let g:Powerline_symbols='fancy'
let Powerline_symbols='fancy'
set t_Co=256 " 状态栏就有颜色了
Yggdroot/indentLine
安装:
Plugin 'Yggdroot/indentLine'
配置:
let g:indentLine_enabled = 1
let g:indentLine_color_term = 239
map <leader>m :IndentLinesToggle<CR> # 解决vim复制代码时,缩进线也被复制的问题 https://github.com/Yggdroot/indentLine/issues/261
为了这个插件能够有效果,也是折腾了半天。在 CentOS 平台是正常的,但是在 Mac 上的缩进线显示不正确,为何会这样呢?SOF-Why is apple vim compiled WITHOUT conceal feature?,原来 Mac 上自带的 Vim 版本虽然是8.0版本,但是没有concel
这个 Feature ,而indentLine
插件要显示对齐线依赖这个,坚线和星号在使用 conceal 功能。
那么该怎么添加这个特性呢?搜了一圈,可以重新安装 Vim,可以参考这篇文章安装 Vim。
经过安装设置之后,可以通过vim --version|grep con
或者:echo has("conceal")
查看是否已经具有 conceal 特性:
rking/ag.vim
ag 的语法:
ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]
ag 这个 vim 插键主要是基于这个项目 ggreer/the_silver_searcher
ag --list-file-types # 查看支持自定义哪些文件类型
安装了这个插键后,在 vim 的命令模式下,可以使用:Ag [options] {pattern} [{directory}]
搜索了。
majutsushi/tagbar
安装 vim 插键之前,机器本身需要ctags
:
# ubuntu
sudo apt-get install ctags
# centos
sudo yum install ctags
# mac
brew install ctags
在这时使用 vim-tagbar 插件可以帮你快速了解当前文件中的类、方法等。
Plugin 'majutsushi/tagbar' " https://github.com/majutsushi/tagbar
配置:
nmap <F8> :TagbarToggle<CR>
关于 tagbar 的使用,看查看这篇文章 wklken-大纲式导航
YouCompleteMe
目前主要涉及的是 Python 开发,所以,YCM 目前没有配置,如下仅供参考。
Plugin 'Valloric/YouCompleteMe'
sudo apt-get install build-essential cmake
sudo apt-get install python-dev python3-dev
cd ~/.vim/bundle/YouCompleteMe
./install.py --all
cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
"YouCompleteMe配置相关
let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
主题
安装主题的方法比较简单,例如需要安装molokai
主题,手动安装则按照如下步骤操作:
- 从 https://github.com/fatih/molokai 下载
molokai.vim
文件,放入~/.vim/colors
中 - 然后在
~/.vimrc
文件中加入行colorscheme molokai
即可。
因为我在 VSCode 和 Iterm2 中都采用了 Dracula 的主题,因此,vim 主题我也同样偏爱它,可以采用插键的方式安装:
Plugin 'dracula/vim'
:PluginInstall
- 然后在
~/.vimrc
文件中加入行colorscheme dracula
即可。
主题相关的命令:
:colorscheme "查看当前主题
:colorscheme space tab "列出所有主题
:colorscheme your-theme "切换主题
设置vim
为了让vim使用起来更加得心应手,先做一些简单的配置。
编辑VIM配置文件,可能一开始没有这个文件,不过没关系,直接vi ~/.vimrc
保存这个文件即可。
今天学习到<leader>
这个概念,很强大,快捷键很方便!
nnoremap
将一个组合快捷键映射为另一个快捷键。
关于leader
以及其他map
知识,可以查看如下文章:
个人vim配置
参考多人的配置,打造属于自己的Vim配置,这个配置不涉及插件的设置,因为常常生产环境是网络不通的,要迅速配置能用:
let mapleader="," " 设置 leader
let g:mapleader = ','
" 分屏窗口移动, Smart way to move between windows
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l
" Go to home and end using capitalized directions
" H和L跳转到行首行末, 实在不想按0和$, 太远
noremap H ^
noremap L $
" 命令行模式增强,ctrl - a到行首, -e 到行尾
cnoremap <C-a> <Home>
cnoremap <C-e> <End>
" 去掉搜索高亮
noremap <silent><leader>/ :nohls<CR>
" 快速保存和退出
" Quickly close the current window
nnoremap <leader>q :q<CR>
" Quickly save the current file
nnoremap <leader>w :w<CR>
syntax on " 自动语法高亮
set cursorline " 突出显示当前行
set encoding=utf-8
set fileencoding=utf-8
set fileformat=unix "从Win上复制文件时,避免换行符错误
set hlsearch " 搜索时高亮显示被找到的文本
set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set incsearch " 输入搜索内容时就显示搜索结果
set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set magic " 设置魔术
set nocompatible " 关闭 vi 兼容模式
set number " 显示行号
set paste " 解决拷贝的时遇到注释会自动注释后续所有行的问题
set ruler " 打开状态栏标尺
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set smartindent " 开启新行时使用智能自动缩进
set tabstop=4 " 设定 tab 长度为 4
set ambiwidth=double " 设置为双字宽显示,否则无法完整显示如:☆
vim配置文件中的注释,末尾用"
隔开即可。保留注释,对于了解配置内容有利。
vim配置参考
- Michael728/my-config-files 个人总结的配置文件
- wklken/k-vim
- Mac OS X 配置指南-vim 同时也有关于 macOS 介绍
- 强大的vim配置文件,让编程更随意 有vim配置的中文注释
FAQ
1. github访问速度慢,下载插件失败
2. tmux里面鼠标复制, 无法选中一行内容
mac上iterm2中,你会发现你想复制terminal上的东西的时候,死活复制不了,这时按住 Option (Alt)
键就行了。
如果是在Windows平台上利用mobaxterm等工具,tmux也无法复制内容,按住shift
键即可。
3. vim 中的内容,mobaxterm无法鼠标复制
注释掉这句话set mouse=a
参考
- pytlab-优雅的在终端中编写Python 同时介绍了 Tmux 和 Vim 的配置
- 那些离了就活不了的 VIM 插件 介绍了一些经典的插键
- 阮一峰-Vim 配置入门
- YouCompleteMe 安装配置方法
Vim 插键及配置的更多相关文章
- ubuntu16.04下vim的安装与配置
一.安装vim 使用命令 $ sudo apt-get install vim 来安装vim,安装后的vim需要进行一些配置,不然使用起来会有些不方便,比如不会自动缩进. 二.配置vim 使用命令 ...
- Vim:gvim安装配置(windows)
Vim:gvim安装配置(windows) 一.gvim的特点: vim要求全部键盘操作,而gvim可以使用鼠标进行可视化操作,即gvim是vim的图形化界面: 二.gvim安装: 下载地址:http ...
- Vim常用命令及配置方案
Vim常用命令及配置方案 几句话 很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好.我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用v ...
- 为了让vi命令也可以使用vim的配置,需要修改 vi /etc/bashrc 增加一行 alias vi='vim'此时,经过上面配置已经可以显示语法高亮了
为了让vi命令也可以使用vim的配置,需要修改 vi /etc/bashrc 增加一行 aliasvi='vim'此时,经过上面配置已经可以显示语法高亮了
- hibernate 联合主键生成机制(组合主键XML配置方式)
hibernate 联合主键生成机制(组合主键XML配置方式) 如果数据库中用多个字段而不仅仅是一个字段作为主键,也就是联合主键,这个时候就可以使用hibernate提供的联合主键生成策略. 具体 ...
- 在vim中安装及配置NERDTree插件
使用Vundle插件安装,在.vimrc中加入以下代码: Plugin 'scrooloose/nerdtree' 打开vim,输入命令如下: :BundleInstall 等待安装完毕 配置NERD ...
- vim上下左右键输出A B
(转)vim上下左右键不能用 把下面这段话存到~/.vimrc就可以了. " An example for a vimrc file. " " Maintainer: B ...
- 如何设置vim中tab键缩进---配置初始化设置
转载自:http://blog.51cto.com/xuding/1725376:加了一些补充说明 问题: Linux系统下,Tab键默认为8个字符,需呀将其修改为4个字符的方式使用 步骤: 1.在用 ...
- LINUX操作系统VIM的安装和配置
VIM的安装 在命令行敲入"vi"后按"tab"键,可以看到目前系统中只安装了vi和vim.tiny. vim是从VI发展而来的一个文本编辑器,功能更强大. ...
随机推荐
- 001-http协议-请求报文以及服务器响应状态
Http协议的几个概念: 1.连接(Connection):浏览器和服务器之间传输数据的通道. 一般请求完毕就关闭,http不保持连接.不保持连接会降低处理速度(因为建立连接速度很慢),保持连接的话就 ...
- install apache-activemq
进入bin/linux-x86-64下 cd apache-activemq-5.14.1/bin/linux-x86-64/ 启动 ./activemq start 五.启动成功后,访问 activ ...
- 《大话设计模式》c++实现 抽象工厂模式
为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机.海信电视机.TCL电视机,则抽象电视机与具体品牌的电视机之间 ...
- JS中常用的输出方式(五种)
1.alert("要输出的内容"); ->在浏览器中弹出一个对话框,然后把要输出的内容展示出来 ->alert都是把要输出的内容首先转换为字符串然后在输出的 2.doc ...
- Rpgmakermv(7) Chronus.js说明与简要翻译
插件地址:https://github.com/triacontane/RPGMakerMV/blob/master/Chronus.js 日语版 ゲーム内で時刻と天候の概念を表現できるプラグインです ...
- 类模板中的static关键字
特性: 1.从类模板实例化的每个模板类有自己的类模板数据成员,该模板类的所有对象共享一个static数据成员 2. 和非模板类的static数据成员一样,模板类的static数据成员也应该在文件范围定 ...
- Codeforces Round #324 (Div. 2) E
这题贪心,考虑先放第一个,然后从第一个数在p中的位置, 不断的往前走,和在他后面的那些数组进行交换,因为这样交换可以提高最大的效率,就是说你花费了1但是使得两个点都朝他的木匾节点减少了1 #inclu ...
- Block 循环引用(中)
不会造成循环引用的block 大部分GCD方法 dispatch_async(dispatch_get_main_queue(), ^{ [self doSomething]; }); 因为self并 ...
- 运用kNN算法识别潜在续费商家
背景与目标 Youzan 是一家SAAS公司,服务于数百万商家,帮助互联网时代的生意人私有化顾客资产.拓展互联网客群.提高经营效率.现在,该公司希望能够从商家的交易数据中,挖掘出有强烈续费倾向的商家, ...
- 什么是Unicode
写这篇博客的原因, 从做软件开始,什么ASCII码, Unicode,UTF-8,UTF-16,UTF-32......这些鬼东西总是经常碰到,只知道这些鬼是编码格式,其他的就啥都不清楚了,既然总是遇 ...