Dalam artikel Lima plugin Vim teratas untuk sysadmin, saya membahas lima plugin plus bonus yang membuat hidup lebih mudah bagi sysadmin saat menggunakan Vim. Artikel ini akan memperluasnya dengan mengembangkan buku pedoman Ansible untuk mengonfigurasi lingkungan Vim awal menggunakan plugin tersebut.
Buku pedoman ini bekerja pada sistem Fedora Linux tetapi harus bekerja sama dengan distribusi lain dengan membuat sedikit modifikasi. Di setiap bagian berikut, kita akan membahas perubahan yang diperlukan untuk membuatnya berfungsi di sistem lain.
Catatan :Buku pedoman ini menimpa .vimrc
yang ada file konfigurasi, jadi akan lebih berguna untuk menyiapkan sistem baru yang belum memiliki konfigurasi Vim. Jika Anda sudah memiliki file konfigurasi Vim, buat cadangannya sebelum menjalankan buku pedoman ini.
Untuk menjalankan buku pedoman ini, Anda harus menginstal Ansible. Di Fedora, Anda dapat menginstal Ansible menggunakan dnf
, seperti ini:
$ sudo dnf install -y ansible
Untuk detail selengkapnya tentang opsi penginstalan yang mungkin, lihat Panduan Penginstalan yang Mungkin.
1. Memulai buku pedoman
Buat file playbook Ansible Anda vim-config.yaml
dan edit menggunakan editor teks favorit Anda. Jika Anda baru mengenal Ansible, periksa tautan playbook ini untuk mempelajarinya lebih lanjut.
$ vi vim-config.yaml
[ Anda mungkin juga menyukai: Pengantar editor vi ]
Sekarang, mulailah definisi buku pedoman Anda dengan memberikan nama dan daftar host target. Dalam hal ini, kami hanya akan menargetkan localhost
untuk mengonfigurasi Vim secara lokal.
- name: Config Vim with plugins
hosts: localhost
Selanjutnya, atur gather_facts: yes
opsi untuk mengumpulkan fakta tentang sistem Anda. Anda akan memerlukannya untuk mengakses variabel lingkungan di langkah berikutnya:
gather_facts: yes
Terakhir, atur opsi global become: no
untuk menunjukkan bahwa, secara umum, tugas ini tidak memerlukan eskalasi hak istimewa. Kami akan menyetel eskalasi hak istimewa secara lokal untuk tugas individu yang memerlukannya, seperti menginstal paket sistem.
become: no
Selanjutnya, tentukan beberapa variabel yang berguna.
2. Mendefinisikan variabel
Mengonfigurasi plugin Vim dan Vim memerlukan penambahan konten ke $HOME/.vim
direktori dan ke $HOME/.vimrc
berkas konfigurasi. Untuk memastikan bahwa kita menggunakan nilai-nilai ini secara konsisten dan menghindari mengetik ulang berkali-kali, mari kita definisikan dua variabel untuk menyimpan nilainya:
vars:
vim_dir: "{{ ansible_env.HOME }}/.vim"
vimrc: "{{ ansible_env.HOME }}/.vimrc"
Perhatikan bahwa kita menggunakan ansible_env.HOME
variabel fakta untuk mengambil nilai $HOME
variabel lingkungan. Untuk informasi lebih lanjut tentang mendapatkan variabel lingkungan, lihat dokumentasi.
Sekarang, mari mulai mendefinisikan tugas yang dijalankan oleh buku pedoman.
3. Menginstal paket yang diperlukan
Langkah selanjutnya dalam membuat playbook adalah menentukan tugas-tugas yang akan dijalankan playbook. Mulailah dengan memberikan tasks:
parameter buku pedoman:
tasks:
Karena tugas pertama adalah menginstal paket sistem yang diperlukan oleh beberapa plugin Vim yang akan kita instal nanti. Gunakan modul paket untuk menginstalnya dan berikan parameter become: yes
untuk mengaktifkan eskalasi hak istimewa, yang diperlukan untuk menginstal paket sistem:
- name: Install required packages
package:
name:
- vim-enhanced
- git
- powerline-fonts
- fzf
state: installed
become: yes
package
modul bekerja di distribusi yang berbeda, tetapi nama paketnya berbeda. Nilai ini berlaku untuk Fedora 32. Jika Anda menjalankan buku pedoman ini di distribusi yang berbeda, ubah nama paket sesuai dengan persyaratan distribusi Anda.
Selanjutnya, buat .vim
struktur direktori.
4. Membuat direktori
Gunakan modul file dengan parameter state: directory
untuk membuat direktori yang diperlukan. Karena ada tiga direktori, jalankan modul ini dalam satu lingkaran untuk membuat semuanya dengan satu tugas:
- 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"
Perhatikan bahwa kita menggunakan vim_dir
variabel yang kita definisikan sebelumnya untuk mewakili .vim
direktori. Kami menggunakan sintaks Jinja2 {{ vim_dir }}
.
Sekarang direktori sudah ada, Anda perlu mengunduh Pathogen.
5. Mengunduh Patogen
Untuk contoh ini, mari gunakan Vim-Pathogen sebagai pengelola plugin Vim. Untuk menginstalnya menggunakan Ansible, terapkan modul get_url untuk mengunduh file plugin langsung ke direktori tujuannya:
- name: Ensure Pathogen is in place
get_url:
dest: "{{ vim_dir }}/autoload/pathogen.vim"
url: https://tpo.pe/pathogen.vim
Selanjutnya, terapkan plugin yang diperlukan.
6. Menyebarkan plugin dari Git
Setelah Pathogen terinstal, mari gunakan modul git untuk menerapkan plugin yang diperlukan dengan mengkloning repositori GitHub mereka ke direktori tujuan. Mirip dengan membuat direktori, gunakan loop untuk mengkloning semua repositori dengan satu tugas:
- name: Deploy plugins
git:
dest: "{{ vim_dir }}/bundle/{{ item.name }}"
repo: "{{ item.url }}"
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
Perhatikan bahwa kita menggunakan daftar kamus sebagai input untuk loop dan menggunakan nilainya dengan sintaks {{ item.KEY }}
jika diperlukan sebagai masukan untuk parameter modul.
Selanjutnya, salin file konfigurasi dasar untuk Vim.
7. Menyalin file konfigurasi awal
Sebagai tugas terakhir, gunakan modul salin untuk menyalin file konfigurasi dasar untuk Vim. Pertama, buat file konfigurasi di bawah sub-direktori files
:
$ mkdir files
$ vim 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 <F5> :NERDTreeToggle<CR>
" Configuration floaterm
let g:floaterm_keymap_toggle = '<F12>'
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 } }
Kemudian, gunakan copy
modul untuk menyalin file ke tujuan target:
- name: Ensure .vimrc config in place
copy:
src: vimrc
dest: "{{ vimrc }}"
backup: yes
mode: 0640
Perhatikan bahwa Anda tidak perlu menentukan direktori files
di src
jalur. Secara default, Ansible mencari file untuk disalin di sub-direktori ini.
Terakhir, jalankan buku pedoman.
8. Menyatukan semuanya
Buku pedoman Anda selesai. Untuk referensi, inilah pedoman lengkapnya:
- name: Config Vim with plugins
hosts: localhost
gather_facts: yes
become: no
vars:
vim_dir: "{{ ansible_env.HOME }}/.vim"
vimrc: "{{ ansible_env.HOME }}/.vimrc"
tasks:
- name: Install required packages
package:
name:
- vim-enhanced
- git
- powerline-fonts
- fzf
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:
dest: "{{ vim_dir }}/autoload/pathogen.vim"
url: https://tpo.pe/pathogen.vim
- name: Deploy plugins
git:
dest: "{{ vim_dir }}/bundle/{{ item.name }}"
repo: "{{ item.url }}"
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
Sekarang, simpan file Anda, lalu tutup editor teks.
Jalankan playbook menggunakan ansible-playbook
perintah dan nama buku pedoman. Karena buku pedoman ini menargetkan localhost
hanya, inventaris tidak benar-benar diperlukan. Anda masih dapat membuatnya. Juga, karena salah satu tugas memerlukan eskalasi hak istimewa, berikan parameter -K
untuk mengetik sudo
sandi, memungkinkan Ansible untuk menjalankan tugas-tugas tersebut.
Catatan :Cadangkan .vimrc
yang ada file konfigurasi sebelum menjalankan playbook ini.
$ ansible-playbook -K vim-config.yaml
BECOME password:
PLAY [Config Vim with plugins] *************************************
TASK [Gathering Facts] *********************************************
ok: [localhost]
TASK [Install required packages] ***********************************
changed: [localhost]
TASK [Ensure .vim/{autoload,bundle} directory exists] **************
changed: [localhost] => (item=/home/ricardo/.vim)
changed: [localhost] => (item=/home/ricardo/.vim/autoload)
changed: [localhost] => (item=/home/ricardo/.vim/bundle)
TASK [Ensure Pathogen is in place] *********************************
changed: [localhost]
TASK [Deploy plugins] **********************************************
changed: [localhost] => (item={'name': 'vim-airline', 'url': 'https://github.com/vim-airline/vim-airline'})
changed: [localhost] => (item={'name': 'nerdtree', 'url': 'https://github.com/preservim/nerdtree'})
changed: [localhost] => (item={'name': 'fzf-vim', 'url': 'https://github.com/junegunn/fzf.vim'})
changed: [localhost] => (item={'name': 'vim-gitgutter', 'url': 'https://github.c
changed: [localhost] => (item={'name': 'vim-fugitive', 'url': 'https://github.com/tpope/vim-fugitive'})
changed: [localhost] => (item={'name': 'vim-floaterm', 'url': 'https://github.com/voldikss/vim-floaterm'})
TASK [Ensure .vimrc config in place] *******************************
changed: [localhost]
PLAY RECAP *********************************************************
localhost : ok=5 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Anda sekarang dapat menguji konfigurasi Vim baru Anda dengan menjalankan vim
:
[ Butuh lebih banyak tentang Ansible? Ikuti kursus tinjauan teknis gratis dari Red Hat. Ansible Essentials:Kesederhanaan dalam Tinjauan Teknis Otomasi. ]
Apa selanjutnya?
Anda telah membuat buku pedoman untuk mengotomatiskan penerapan konfigurasi Vim dasar dengan enam plugin yang berguna untuk sysadmin. Jika Anda ingin menggunakan buku pedoman yang sama untuk menerapkan plugin tambahan, tambahkan plugin tersebut ke daftar loop di Deploy plugins
tugas. Juga, tambahkan paket sistem yang diperlukan ke Install required packages
tugas.
Dengan menggunakan buku pedoman ini, Anda dapat dengan cepat menerapkan dan memperbarui konfigurasi Vim Anda menggunakan Infrastruktur sebagai prinsip Kode.
Untuk informasi lebih lanjut tentang Ansible, lihat dokumentasi resminya.