弱龄寄事外,委怀在琴书。这篇文章主要讲述如何使用 Ansible 配置 Vim并安装插件相关的知识,希望能为你提供帮助。
本文将使用??Centos??8系统通过编写 Ansible playbook 来扩展使用vim编辑器。通过介绍每一步的操作说明,最后将汇总起来。 |
?.vimrc?
?备份一下。本文编写的playbook会覆盖现有的
??.vimrc?
?
配置文件。安装ansible
[ansible@Master ~]$ yum -y install ansible
创建playbook
创建 Ansible playbook文件 ?
?vim-config.yaml?
?[ansible@Master ~]$ vim vim-config.yaml
现在,通过提供名称和目标主机列表来开始playbook的定义。本文,我们仅安装在本机,所以?
?hosts:?
??部分的值写的是??localhost?
?。如果需要将vim部署到其他主机中,可以再次写入清单里面的主机、主机组。---
- name: Config Vim with Plugins
hosts: localhost
接下来,设置?
?gather_facts: yes?
?选项以收集有关系统信息。我们需要它来访问下一步中的环境变量:gather_facts: yes
定义变量
配置 Vim 和 Vim 插件需要向 ?
?$HOME/.vim?
?
目录和
??$HOME/.vimrc?
?
配置文件添加内容。让我们定义两个变量来存储它们的值:vars:
vim_dir: " ansible_env.HOME /.vim"
vimrc: " ansible_env.HOME /.vimrc"
我们使用 ?
?ansible_env.HOME?
?
变量来获取
??$HOME?
?环境变量的值。安装所需的包
现在开始定义playbook将运行的任务。首先提供?
?tasks:?
?:tasks:
由于第一个任务是安装一些我们稍后将安装的 Vim 插件所需的系统包。使用 ?
?package?
?
模块安装它们:- name: Install required packages
package:
name:
- vim-enhanced
- git
- powerline-fonts
- fzf
state: installed
become: yes
tags: install_packages
?
?package?
??模块适用于不同的发行版。可以设置??become: yes?
??自动提升权限。??tags?
?为安装部分添加一个标签,方便后面单独安装。创建目录
使用带有参数 ?
?state: directory?
?
的??file?
??模块来创建目录。由于有三个目录,因此使用??loop?
?模块来保存所需的条目:- name: Ensure .vim/autoload,bundle directory exists
file:
path: " item "
state: directory
recurse: no
mode: 0750
loop:
- " vim_dir "
- " vim_dir /autoload"
- " vim_dir /bundle"
下载vim插件管理器
本文使用 ?
?Vim-Pathogen?
?
作为 Vim 插件管理器。若要使用 Ansible 安装它,可以使用??get_url?
?
模块将插件下载到其目标目录:- name: Ensure Pathogen is in place
get_url:
url: https://github.com/tpope/vim-pathogen/blob/master/autoload/pathogen.vim
dest: " vim_dir /autoload/pathogen.vim"
从github克隆插件
安装 Pathogen 后,从 GitHub 克隆到目标目录来部署所需的插件。与创建目录类似,使用?
?loop?
?模块克隆所需的仓库:- name: Deploy Plugins
git:
repo: " item.url "
dest: " vim_dir /bundle/ item.name "
clone: yes
update: yes
recursive: no
loop:
- name: vim-airline
url: https://github.com/vim-airline/vim-airline
- name: nerdtree
url: https://github.com/preservim/nerdtree
- name: fzf-vim
url: https://github.com/junegunn/fzf.vim
- name: vim-gitgutter
url: https://github.com/airblade/vim-gitgutter
- name: vim-fugitive
url: https://github.com/tpope/vim-fugitive
- name: vim-floaterm
url: https://github.com/voldikss/vim-floaterm
我们使用字典列表作为?
?loop?
??的输入,调用他们的语法是??
item.KEY
?
?。创建vim配置文件
作为最后的任务,使用 ?
?copy?
?
模块复制 Vim 的配置文件。首先,在子目录 files下创建配置文件:[ansible@Master ~]$ mkdir files
[ansible@Master ~]$ vim files/vimrc
将如下内容复制到files/vimrc中:
execute pathogen#infect()
syntax on
filetype plugin indent on
colo darkblue
" Configuration vim Airline
set laststatus=2
let g:airline#extensions#tabline#enabled=1
let g:airline_powerline_fonts=1
" Configuration NERDTree
map:NERDTreeToggle
" Configuration floaterm
let g:floaterm_keymap_toggle =
let g:floaterm_width = 0.9
let g:floaterm_height = 0.9
" Configuration Vim.FZF
let g:fzf_preview_window = right:50%
let g:fzf_layout =window:width: 0.9, height: 0.6
然后,使用?
?copy?
?模块将文件复制到目的地:- name: Ensure vimrc config in place
copy;
src: vimrc
dest: " vimrc "
backup: yes
mode: 0640
注意,不需要在 ?
?src?
?
路径中指定??files?
??目录。默认情况下,Ansible 在此子目录??files?
?中查找要复制的文件。playbook剧本内容整合到一起
这里是完整的剧本:
---
- name: Config Vim with Plugins
hosts: localhost
gather_facts: yes
vars:
vim_dir: " ansible_env.HOME /.vim"
vimrc: " ansible_env.HOME /.vimrc"
tasks:
- name: Install required packages
package:
name:
- vim-enhanced
- git
- powerline-fonts
state: installed
become: yes
tags: install_packages
- name: Ensure .vim/autoload,bundle directory exists
file:
path: " item "
state: directory
recurse: no
mode: 0750
loop:
- " vim_dir "
- " vim_dir /autoload"
- " vim_dir /bundle"
- name: Ensure Pathogen is in place
get_url:
url: https://tpo.pe/pathogen.vim
dest: " vim_dir /autoload/pathogen.vim"
- name: Deploy Plugins
git:
repo: " item.url "
dest: " vim_dir /bundle/ item.name "
clone: yes
update: yes
recursive: no
loop:
- name: vim-airline
url: https://github.com/vim-airline/vim-airline
- name: nerdtree
url: https://github.com/preservim/nerdtree
- name: fzf-vim
url: https://github.com/junegunn/fzf.vim
- name: vim-gitgutter
url: https://github.com/airblade/vim-gitgutter
- name: vim-fugitive
url: https://github.com/tpope/vim-fugitive
- name: vim-floaterm
url: https://github.com/voldikss/vim-floaterm
- name: Ensure vimrc config in place
copy:
src: vimrc
dest: " vimrc "
backup: yes
mode: 0640
使用 ?
?ansible-playbook?
?
??命令???执行改剧本。由于此剧本仅针对本地主机,因此并不严格要求清单。首先添加??-C?
?选项,用来试运行一下,检查错误。然后再执行。[ansible@Master ~]$ ansible-playbook -C vim-config.yaml
[ansible@Master ~]$ ansible-playbook vim-config.yaml
总结
通过本剧本,可以深入了解ansible playbook的许多模块使用方法。
【如何使用 Ansible 配置 Vim并安装插件】本文原创地址:??https://www.linuxprobe.com/ansible-configure-vim-plugins.html??
推荐阅读
- Shell之正则表达式
- Intellij 插件 RestfulToolkit#yyds干货盘点#
- Shell编辑器之sed编辑器
- Python数据分析基础-3Python的日期和时间及其处理的常用方法
- shell 之awk编辑器
- Linux之find xargs
- Shell脚本之免交互(EOFExpect)
- JAVA SE—— 数组(详细!!!)
- Java Record 的一些思考 - 序列化相关