Vim 插键及配置-程序员宅基地

技术标签: python  git  开发工具  

6d9475f6ly1fxspjxxb2pj20hs0cimym.jpg

如果你觉得这个页面广告太多,欢迎移步博客阅读: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 文件了

参考:

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 特性:
006tNbRwly1fxrioguwosj30f902mdg7.jpg

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主题,手动安装则按照如下步骤操作:

因为我在 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配置参考

FAQ

1. github访问速度慢,下载插件失败

2. tmux里面鼠标复制, 无法选中一行内容

mac上iterm2中,你会发现你想复制terminal上的东西的时候,死活复制不了,这时按住 Option (Alt)键就行了。
如果是在Windows平台上利用mobaxterm等工具,tmux也无法复制内容,按住shift键即可。

3. vim 中的内容,mobaxterm无法鼠标复制

注释掉这句话set mouse=a

参考

转载于:https://www.cnblogs.com/michael-xiang/p/10467220.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34355881/article/details/94298114

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文