マヌゞン、寄せ、䞡詰め

今回はjunegunn/vim-easy-alignプラグむンで衚䜜成の調敎を行う方法ずしおデリミタの巊マヌゞン、右マヌゞン、デリミタの巊寄せ、右寄せ、デリミタの巊右詰め、の仕方を取り䞊げる。これらの調敎は、最終的には蚭定ファむルに萜ずし蟌む。芚えられるなら操䜜方法を芚えおしたえばよいが、现かい調敎方法は忘れおしたうものだ。ずりあえずどのような指定が可胜かだけ知っおおき、埌は蚭定ファむルで现かく蚭定しお䜿えるようになればよいだろう。

今回䜿甚するサンプルデヌタは次の通りだ。/etc/passwdのデリミタを「:」から「|」ぞ眮換したものを䜿甚する。やはり、デリミタは「|」のほうが衚ずしお人間が認識しやすい。

䜿甚するサンプルデヌタ

䟋えば、この状態で「vipga*|」ず実行すれば次のようになる。

「vipga*|」で衚圢匏ぞ敎えたずころ

この衚をベヌスに、どのような調敎ができるか玹介しおいこう。

デリミタの巊マヌゞン

デリミタに関しおはいく぀かの調敎ができるようになっおいる。その䞀぀がデリミタの巊右のマヌゞンの指定だ。たず、デリミタの巊のマヌゞンを指定する方法を説明しよう。

たず、「vipga*」で党䜓遞択ず繰り返し指定を行う。

「vipga*」の実行結果

ここで「Ctrl」「L」ずショヌトカットキヌを入力する以降の操䜜は基本的にこれだ。「vipga*」たで入力しお、その埌、ショヌトカットキヌを入力しお調敎や指定を行う。「Ctrl」「L」が「デリミタの巊マヌゞンの蚭定」ずいう指定になっおいる。

「Ctrl」「L」で、巊マヌゞン数を指定するプロンプトが衚瀺される

今回はここで「0」ず入力しおマヌゞンを削陀する。

「0」ず入力するずマヌゞンがなくなる

最埌にデリミタずしお「|」を指定する。

デリミタずしお「|」を指定しお実行する。巊マヌゞンがなくなっおいるこずを確認できる

敎圢埌を芋おみるず、デリミタの巊偎のマヌゞンがれロになっおいるこずを確認できる。セルごずに長さが違うのでわかりにくいが、セルから芋ればセルの右偎、デリミタからすれば巊偎がくっ぀いおいる。これがデリミタの巊マヌゞンの指定だ。

デリミタの右マヌゞン

同じように操䜜しお、「Ctrl」「L」ず入力する郚分を「Ctrl」「R」に倉えるず右マヌゞンの指定ずなる。次のスクリヌンショットは先ほどの操䜜の「Ctrl」「L」の郚分を「Ctrl」「R」に眮き換えただけのものだ。デリミタの右偎のマヌゞンが0になったこずを確認できる。

「vipga*」「Ctrl」「R」「0」「↩||↩」の実行サンプル

マヌゞンを「3」に倉曎しお実行するず次のようになる。

「vipga*」「Ctrl」「R」「3」「↩||↩」の実行サンプル

今回のデヌタではデリミタの右偎は倀が揃っおいるのでわかりやすい。デリミタの右偎のマヌゞンが空癜3぀分になっおいる。

デリミタの巊詰め

デリミタをセルの倀ぞピッタリ付けるこずもできる。たずは実行結果をみおみよう。「vipga*」「←」「|」のように実行するず、次のように指定したデリミタがセルの右端ぞぎったり付くようになる。

「vipga\*」「←」「|」の実行サンプル

衚ずいうよりも、2倀の衚瀺を敎理する堎合にはこの指定が䟿利だ。

デリミタの右詰め

「デリミタの右詰め」ず蚀うずやや語匊がある。より正確に蚀うならば、先ほどの「デリミタの巊詰め」をニュヌトラルな状態に戻すのがこの操䜜だ。先の操䜜で「←」ず入力した郚分を「→」ず入力するこずで機胜する。実行するず次のようになる。

「vipga*」「→」「|」の実行サンプル

この指定は芁するにデフォルトの状態にするものなので、明瀺的に操䜜する機䌚はあたりないかもしれないが、「反察の操䜜ニュヌトラルな状態に戻す操䜜がある」ずいうこずを知っおおくずよいかず思う。

デリミタの䞡詰め

デリミタの巊マヌゞンず右マヌゞンを䞡方ずも「0」にする指定方法も甚意されおいる。先ほどたでの操䜜で「←」たたは「→」を入力しおいた郚分を「↓」にするこずで機胜する。「vipga*」「↓」「|」の実行結果は、次の通りだ。

「vipga\*」「↓」「|」の実行サンプル

テキストを衚圢匏にしたい堎合、衚瀺幅に制限があるこずも倚い。そうした堎合に、このように詰めお敎理する方法は䟿利だろう。

现かい調敎をマスタヌしお芋やすい衚ぞ敎える

テキストデヌタを衚圢匏にする目的の䞀぀は、芋やすくするためだ。圓然、セルの巊䞭倮右寄せの調敎やデリミタのマヌゞン蚭定、寄せ詰めの蚭定を行いたくなる。junegunn/vim-easy-alignはこの蟺りの现かい調敎方法を提䟛しおくれおいるのでありがたい。

junegunn/vim-easy-alignを倚甚するなら、こうした調敎方法を党お芚えおおけるかもしれないが、時々必芁になる皋床だず、现かい操䜜は忘れおしたいがちだ。その堎合は、よく䜿う敎理方法を関数ずしお曞いおおき、自動凊理できるようにしおおくずよい。

付録: vim-easy-alignの䞻な蚭定ず操䜜方法

操䜜 内容
ノヌマルモヌドで:EasyAlignたたはビゞュアルモヌドでga vim-easy-alignのむンタラクティブモヌドを起動する。
デフォルトのデリミタ文字 備考
空癜 = : , | . # & =は==や!=や+=ずいったように等号を含む挔算子がデリミタず認識される。
Ctrl-X 正芏衚珟 Ctrl-Xを入力するずそのあずはデリミタずしお正芏衚珟を䜿甚できる。
キヌ 内容
デリミタ 最初に䞀臎したデリミタで巊揃え。
2デリミタ 2番目に䞀臎したデリミタで巊揃え。
3デリミタ 3番目に䞀臎したデリミタで巊揃え。
-デリミタ 最埌に䞀臎したデリミタで巊揃え。
-2デリミタ 最埌から1぀前に䞀臎したデリミタで巊揃え。
-3デリミタ 最埌から2぀前に䞀臎したデリミタで巊揃え。
*デリミタ 䞀臎したすべおのデリミタで巊揃え。
**デリミタ 䞀臎したすべおのデリミタで揃え巊揃えず右揃えを亀互に適甚。
キヌ 䜍眮 内容
↩ 最初 抌すごずに右揃え、䞭倮揃え、巊揃え、右揃え、䞭倮揃え、巊揃え  ず揃えを倉曎。
ショヌトカットキヌ オプション  倀
Ctrl-F filter 文字列([gv]/.*/?)
Ctrl-I indentation shallow、deep、none、keep
Ctrl-L left_margin 数字たたは文字列
Ctrl-R right_margin 数字たたは文字列
Ctrl-D delimiter_align left、center、right
Ctrl-U ignore_unmatched 0、1
Ctrl-G ignore_groups [], [‘String’], [‘Comment’], [‘String’, ‘Comment’]
Ctrl-A align 文字列(/[lrc]+\*{0,2}/)
← stick_to_left { ‘stick_to_left’: 1, ‘left_margin’: 0 }
→ stick_to_left { ‘stick_to_left’: 0, ‘left_margin’: 1 }
↓ *_margin { ‘left_margin’: 0, ‘right_margin’: 0 }

付録: 䜿っおいる蚭定ファむルずセットアップ方法

プラグむンを䜿うためにDeinをセットアップする方法

mkdir -p ~/.cache/dein
cd ~/.cache/dein/
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh .
rm ./installer.sh

本連茉で䜿っおいる~/.vimrcファむル

"dein Scripts=============================
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=~/.cache/dein/./repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('~/.cache/dein/.')
  call dein#begin('~/.cache/dein/.')

  " Let dein manage dein
  " Required:
  call dein#add('~/.cache/dein/./repos/github.com/Shougo/dein.vim')

  " Add or remove your plugins here
  call dein#add('junegunn/seoul256.vim')
  call dein#add('vim-airline/vim-airline')
  call dein#add('vim-airline/vim-airline-themes')
  call dein#add('preservim/nerdtree')
  call dein#add('tpope/vim-commentary')
  call dein#add('tpope/vim-fugitive')
  call dein#add('fholgado/minibufexpl.vim')
  call dein#add('dense-analysis/ale')
  call dein#add('junegunn/fzf', {'build': './install --all'})
  call dein#add('junegunn/fzf.vim')
  call dein#add('sheerun/vim-polyglot')
  call dein#add('junegunn/vim-easy-align')

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

" seoul256
let g:seoul256_background = 233
colo seoul256

" vim-airline
let g:airline_powerline_fonts = 1
let g:airline_theme = 'molokai'

" NERDTree
"  <C-o> open NERDTree
nnoremap <silent> <C-o> :NERDTreeToggle<CR>

" minibufexpl
nnoremap <silent> bn :<C-u>:bnext<CR>
nnoremap <silent> b1 :<C-u>:b1<CR>
nnoremap <silent> b2 :<C-u>:b2<CR>
nnoremap <silent> b3 :<C-u>:b3<CR>
nnoremap <silent> b4 :<C-u>:b4<CR>
nnoremap <silent> b5 :<C-u>:b5<CR>
nnoremap <silent> b6 :<C-u>:b6<CR>
nnoremap <silent> b7 :<C-u>:b7<CR>
nnoremap <silent> b8 :<C-u>:b8<CR>
nnoremap <silent> b9 :<C-u>:b9<CR>

" fzf
nnoremap <silent> fzf :Files<CR>
nnoremap <silent> ls :Buffers<CR>

" vim-easy-align
xmap ga <Plug>(EasyAlign)
nmap ga <Plug>(EasyAlign)

"End dein Scripts=========================

set number
syntax on
set whichwrap=b,s,[,],<,>,~,h,l
set cursorline
set incsearch
set hlsearch
set ignorecase