Vim定制化简介

什么是Vim?

Vim是几乎所有Unix系统中都会存在的少数文本编辑器之一。虽然最初的学习曲线是不可避免的,但Vim的目标是成为一个高效的文本编辑器,并提供一个根据用户喜好可配置的插件系统。它还支持数百种编程语言和文件扩展名。

本指南详细介绍了Vim文本编辑器的配置,旨在帮助那些有兴趣根据个人喜好自己定制Vim的人。我将介绍一系列用于定制Vim执行某些任务和响应用户输入的方法,以及插件管理系统。

在完成本教程之后,您将对Vim编辑器进行微调,使其行为更加智能,并获得管理外部插件的机会。

开始之前

  1. 要完成本教程,必须基本了解如何在Vim环境中工作。读者应该熟悉使用Vim编辑文档的步骤。
  2. 完成本教程需要使用一个受限的用户帐户。如果您尚未创建一个服务器,请按照“ 安全服务器”指南中的步骤操作。

自定义您的Vim实例

可以基于每个用户自定义Vim,也可以设置配置以应用于系统范围。也可以集成这两个选项 - 在您希望某些设置应用于系统上的所有帐户,以及其他设置仅适用于您自己的用户帐户的情况下非常有用。

自定义全局vimrc文件

本节中的配置将应用于所有用户帐户的系统范围。

  1. 默认的Vim安装包将包含一个包含Vim核心全局设置的文件,名为vimrc。此文件将位于/etc/vim/vimrc或者etc/vimrc,取决于您的Linux发行版。 注意:在编辑未授予用户帐户读和/或写权限的文件时,必须在命令前加上前缀 sudo。
  2. 打开vimrc文件进行编辑。该文件在不同Linux发行版之间可能在语法上有所不同,但核心设置保持不变。在下面的文件中,显示了包含大量配置选项的段,可以自己进行配置。

/etc/vimrc文件

1 2 3 4 5 6 7 8

set showcmd› › " Show (partial) command in status line. set showmatch› › " Show matching brackets. set ignorecase›› " Do case insensitive matching set smartcase› › " Do smart case matching set incsearch› › " Incremental search set autowrite› › " Automatically save before commands like :next and :make set hidden›› " Hide buffers when they are abandoned set mouse=a› › " Enable mouse usage (all modes)

自定义本地.vimrc文件

本节中的配置仅适用于活动用户帐户。

创建.vimrc

  1. 在Vim的加载序列期间,它将自动检查当前用户的主目录中的.vimrc文件。此文件中指定的所有设置将覆盖任何先前加载的配置文件中明确矛盾的设置,在本例中是全局vimrc文件。

从Vim会话中,在主目录中创建.vimrc文件。以下内容包括大多数用户在任何情况下使用Vim时会发现有用的基本配置。您可以需要选择添加到个人.vimrc文件设置中。

〜/ .vimrc

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81

" Set compatibility to Vim only. set nocompatible " Helps force plug-ins to load correctly when it is turned back on below. filetype off " Turn on syntax highlighting. syntax on " For plug-ins to load correctly. filetype plug-in indent on " Turn off modelines set modelines=0 " Automatically wrap text that extends beyond the screen length. set wrap " Vim's auto indentation feature does not work properly with text copied from outisde of Vim. Press the <F2> key to toggle paste mode on/off. nnoremap <F2> :set invpaste paste?<CR> imap <F2> <C-O>:set invpaste paste?<CR> set pastetoggle=<F2> " Uncomment below to set the max textwidth. Use a value corresponding to the width of your screen. " set textwidth=79 set formatoptions=tcqrn1 set tabstop=2 set shiftwidth=2 set softtabstop=2 set expandtab set noshiftround " Display 5 lines above/below the cursor when scrolling with a mouse. set scrolloff=5 " Fixes common backspace problems set backspace=indent,eol,start " Speed up scrolling in Vim set ttyfast " Status bar set laststatus=2 " Display options set showmode set showcmd " Highlight matching pairs of brackets. Use the '%' character to jump between them. set matchpairs+=<:> " Display different types of white spaces. set list set listchars=tab:›\ ,trail:•,extends:#,nbsp:. " Show line numbers set number " Set status line display set statusline=%F%m%r%h%w\ FORMAT=%{&ff}\ TYPE=%Y\ POS=%l,%v\ BUFFER=%n\ %{strftime('%c')} " Encoding set encoding=utf-8 " Highlight matching search patterns set hlsearch " Enable incremental search set incsearch " Include matching uppercase words with lowercase search term set ignorecase " Include only uppercase words with uppercase search term set smartcase " Store info from no more than 100 files at a time, 9999 lines of text, 100kb of data. Useful for copying large amounts of data between files. set viminfo='100,<9999,s100 " Map the <Space> key to toggle a selected fold opened/closed. nnoremap <silent> <Space> @=(foldlevel('.')?'za':"\<Space>")<CR> vnoremap <Space> zf " Automatically save and load folds autocmd BufWinLeave *.* mkview autocmd BufWinEnter *.* silent loadview"

集成插件

插件是一种定制Vim实例的强大方法; 他们可以授予您额外的功能,以帮助满足更具体的使用需求。

安装Vim-Plug插件管理器

安装和管理插件的最有效方法是使用插件管理工具。下面提供了安装Vim-Plug的说明。

1. 安装curl。

基于Fedora / RHEL

sudo yum install curl

基于Debian

sudo apt install curl

Arch Linux

sudo pacman -Syy curl

2. 创建安装目录,下载并从Github安装Vim-Plug

sudo curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

使用Vim-Plug 安装您的第一个插件

使用插件管理器可以自动安装和设置您选择添加的任何插件。

1.创建一个单独的文件来管理您的插件,以及一个用于存储它们的新目录。

touch ~/.vimrc.plug mkdir ~/vimplug-plugins
2. 在Vim编辑器中打开.vimrc并在底部添加以下文本以调用.vimrc.plug文件。

〜/ .vimrc
. . .  
" Call the .vimrc.plug file  
if filereadable(expand("~/.vimrc.plug"))      
  source ~/.vimrc.plug  
endif
3. 现在,在Vim中打开.vimrc.plug文件。使用下面的内容填充文件以添加Fugitive Vim插件,即Github包装器。安装此插件后,您现在可以在Vim内运行Git终端!
注意需要在“plug#begin”和“plug#end”行之间添加要安装的任何其他插件。
〜/ .vimrc.plug
call plug#begin('~/.vim/plugged')  
"Fugitive Vim Github Wrapper 
Plug 'tpope/vim-fugitive'  

call plug#end()
注意
如果在此步骤之后您收到类似于E117 Unknown Function: plug#end检查用户权限的错误,
则~/.vim/可能需要chmod -R 0755
4. 保存并关闭.vimrc.plug文件后,退出并重新启动Vim。最终安装过程是PlugInstall在命令模式下发出命令。这将在Vim中打开插件管理器并继续安装* vimrc.plug文件中列出的所有插件。安装的插件将在下次启动Vim时自动加载。

:PlugInstall
5. 下面列出了通过Vim-Plug管理插件的附加命令。
6. 上面列出的命令绝不是详尽无遗的。
大多数插件在安装时也提供支持文档,可以通过键入help命令模式和浏览
Local Additions部分来访问。

从哪里开始

其实存在许多其他的插件和工具来增强您的Vim体验。Vim官方网站和在线维基提供了自定义Vim以及完整记录其可用功能和命令的其他方法。如果需要创建.vimrc文件的可视化和交互式方法,Vim-Config网站将简化该过程并自动生成该文件。

搜索其他插件的最佳位置之一是在VimAwesome网站上。Vim可用的大多数插件都在一个组织良好且易于搜索的环境中,以及所有最流行的插件管理工具的安装说明。

最后,如果你想深入了解Vim-Plug,项目的Github页面是一个很好的起点。所有这些网站的链接都在“ 外部资源”部分中提供。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部材料的准确性或及时性。

原文作者:Andrew Lescher

原文地址:https://www.linode.com/docs/tools-reference/tools/introduction-to-vim-customization/

本文的版权归 阿小庆 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

Angular作为目前最为流行的前端框架,受到了前端开发者的普遍欢迎。不论是初学Angular的新手,还是有一定Angular开发经验的开发者,了解本文中的12...

22280
来自专栏编程之旅

PHP开发——yii2多图上传组件的使用

最近在使用yii2开发一个表单页面的时候,有多图上传的需求,稍微找了找这方面的组件,基本都安利fileInput这个组件,于是就尝试着使用这个库来完成后端表单页...

30910
来自专栏张戈的专栏

原创插件:WordPress博客友好对话框+文章随机推荐滚动条插件(附代码版)

双 11 光棍节,我在博客发布了一篇给博客部署一个友好对话框的教程,用了几天感觉非常不错!就进一步折腾了一下,目前这个 js 已实现以下多种功能: 一、功能描述...

507120
来自专栏数据结构笔记

python爬虫系列之 xpath实战:批量下载壁纸

我们要爬取的目标网站是:http://www.netbian.com/,这个网站长这样:

44440
来自专栏石奈子的Java之路

原 Intellij idea2017编辑

36660
来自专栏有趣的Python和你

人生若只如初见,何必找包爬数据SeleniumPhantomJS豆瓣登陆

13240
来自专栏向治洪

Vue.js简介

Vue.js简介 Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设...

33270
来自专栏小尘哥的专栏

thymeleaf中使用layui

头部引入css,尾部引入js,定义两个模板(一个也可以,里面的碎片分开写,我喜欢写两个分别引入),注意th:fragment,fragment即碎片,可以在模板...

1.1K60
来自专栏阮一峰的网络日志

窗口管理器 xmonad 教程

开发者最需要的,就是一个顺手的开发环境。 ? 每个人的偏好不一样,我的开发环境是 Fish Shell + Xfce + xmonad + Vim,已经用了好多...

419110
来自专栏漫漫前端路

vue-cli 3.0 下发布一个 TypeScript 组件

vue-cli 3.0 提供了一系列功能,包括对 Babel, TypeScript, ESlint, PWA 等开箱即用的支持,同时,它也提供了一个 CLI ...

23420

扫码关注云+社区

领取腾讯云代金券