もう少しVimをちゃんと使えるようになりたいと思い、少し整理してみることにした。
インストール
Vimには色々な種類があるけれど、結論からすると以下。
- Ubuntu 22.04 serverについていえば、vim-basicがインストールされており、最初からほぼフルの状態で使える。
- Ubuntu 22.04 desktopでは、vim-tinyしかインストールされていないので、vim-gtk3をインストールする。
種類についてはこちらで教えてくれていた。
Qiita / Vim の種類 (Vim family)
プログラマの歩き方 / 「vim」の種類
まず、Ubuntu 22.04 serverでどうか、と確認してみた。
用意されているパッケージを確認してみる。
$ apt search "Vi IMproved - enhanced vi editor" Sorting... Done Full Text Search... Done vim/jammy-updates,jammy-security,now 2:8.2.3995-1ubuntu2.1 amd64 [installed,automatic] Vi IMproved - enhanced vi editor vim-athena/jammy-updates,jammy-security 2:8.2.3995-1ubuntu2.1 amd64 Vi IMproved - enhanced vi editor - with Athena GUI vim-gtk/jammy-updates,jammy-security 2:8.2.3995-1ubuntu2.1 all Vi IMproved - enhanced vi editor (dummy package) vim-gtk3/jammy-updates,jammy-security 2:8.2.3995-1ubuntu2.1 amd64 Vi IMproved - enhanced vi editor - with GTK3 GUI vim-nox/jammy-updates,jammy-security 2:8.2.3995-1ubuntu2.1 amd64 Vi IMproved - enhanced vi editor - with scripting languages support vim-tiny/jammy-updates,jammy-security,now 2:8.2.3995-1ubuntu2.1 amd64 [installed,automatic] Vi IMproved - enhanced vi editor - compact version
先頭がvimから始まるライブラリ等もかなりいっぱいある。
$ apt search --names-only ^vim Sorting... Done Full Text Search... Done vim/jammy-updates,jammy-security,now 2:8.2.3995-1ubuntu2.1 amd64 [installed,automatic] Vi IMproved - enhanced vi editor vim-addon-manager/jammy 0.5.10 all manager of addons for the Vim editor vim-addon-mw-utils/jammy 0.2-4 all Vim funcref library vim-airline/jammy 0.11-1 all Lean & mean status/tabline for vim that's light as air …
AthenaというのはX Windows System用のライブラリのようだ。
そして、現在はサポートから外れているみたい(確認していないけれど)。
ということで、vim-noxをインストールしてみる。
$ sudo apt install vim-nox
機能差分を見てみたところ、basicとnoxの差は思っていたよりはずっと小さかった。
これが大きな差になるような使い方はできていないというのが実際のところ。
これをベースとして…
$ vim.tiny --version … Small version without GUI. Features included (+) or not (-): +acl -file_in_path -mouse_urxvt -tcl -arabic -find_in_path +mouse_xterm -termguicolors +autocmd -float +multi_byte -terminal -autochdir -folding -multi_lang +terminfo -autoservername -footer -mzscheme +termresponse -balloon_eval +fork() -netbeans_intg -textobjects -balloon_eval_term -gettext +num64 -textprop -browse -hangul_input -packages -timers +builtin_terms +iconv -path_extra +title -byte_offset +insert_expand -perl -toolbar -channel -ipv6 -persistent_undo +user_commands -cindent -job -popupwin -vartabs -clientserver +jumplist -printer +vertsplit -clipboard -keymap -profile +vim9script +cmdline_compl -lambda -python -viminfo +cmdline_hist -langmap -python3 +virtualedit -cmdline_info -libcall -quickfix +visual +comments -linebreak -reltime +visualextra -conceal -lispindent -rightleft +vreplace -cryptv +listcmds -ruby +wildignore -cscope +localmap +scrollbind -wildmenu +cursorbind -lua -signs +windows -cursorshape -menu -smartindent +writebackup -dialog -mksession -sodium -X11 -diff +modify_fname -sound +xfontset -digraphs +mouse -spell -xim -dnd -mouseshape -startuptime -xpm -ebcdic -mouse_dec -statusline -xsmp -emacs_tags -mouse_gpm -sun_workshop -xterm_clipboard -eval -mouse_jsbterm -syntax -xterm_save +ex_extra -mouse_netterm +tag_binary -extra_search +mouse_sgr -tag_old_static -farsi -mouse_sysmouse -tag_any_white
tinyとの差分
$ vim.basic --version … Huge version without GUI. Features included (+) or not (-): +acl +file_in_path +mouse_urxvt -tag_any_white +arabic +find_in_path +mouse_xterm -tcl +autocmd +float +multi_byte +termguicolors +autochdir +folding +multi_lang +terminal -autoservername -footer -mzscheme +terminfo -balloon_eval +fork() +netbeans_intg +termresponse +balloon_eval_term +gettext +num64 +textobjects -browse -hangul_input +packages +textprop ++builtin_terms +iconv +path_extra +timers +byte_offset +insert_expand -perl +title +channel +ipv6 +persistent_undo -toolbar +cindent +job +popupwin +user_commands -clientserver +jumplist +postscript +vartabs -clipboard +keymap +printer +vertsplit +cmdline_compl +lambda +profile +vim9script +cmdline_hist +langmap -python +viminfo +cmdline_info +libcall +python3 +virtualedit +comments +linebreak +quickfix +visual +conceal +lispindent +reltime +visualextra +cryptv +listcmds +rightleft +vreplace +cscope +localmap -ruby +wildignore +cursorbind -lua +scrollbind +wildmenu +cursorshape +menu +signs +windows +dialog_con +mksession +smartindent +writebackup +diff +modify_fname +sodium -X11 +digraphs +mouse -sound -xfontset -dnd -mouseshape +spell -xim -ebcdic +mouse_dec +startuptime -xpm +emacs_tags +mouse_gpm +statusline -xsmp +eval -mouse_jsbterm -sun_workshop -xterm_clipboard +ex_extra +mouse_netterm +syntax -xterm_save +extra_search +mouse_sgr +tag_binary -farsi -mouse_sysmouse -tag_old_static
basicとの差分
$ vim.nox --version … Huge version without GUI. Features included (+) or not (-): +acl +file_in_path +mouse_urxvt -tag_any_white +arabic +find_in_path +mouse_xterm +tcl +autocmd +float +multi_byte +termguicolors +autochdir +folding +multi_lang +terminal -autoservername -footer -mzscheme +terminfo -balloon_eval +fork() +netbeans_intg +termresponse +balloon_eval_term +gettext +num64 +textobjects -browse -hangul_input +packages +textprop ++builtin_terms +iconv +path_extra +timers +byte_offset +insert_expand +perl +title +channel +ipv6 +persistent_undo -toolbar +cindent +job +popupwin +user_commands -clientserver +jumplist +postscript +vartabs -clipboard +keymap +printer +vertsplit +cmdline_compl +lambda +profile +vim9script +cmdline_hist +langmap -python +viminfo +cmdline_info +libcall +python3 +virtualedit +comments +linebreak +quickfix +visual +conceal +lispindent +reltime +visualextra +cryptv +listcmds +rightleft +vreplace +cscope +localmap +ruby +wildignore +cursorbind +lua +scrollbind +wildmenu +cursorshape +menu +signs +windows +dialog_con +mksession +smartindent +writebackup +diff +modify_fname +sodium -X11 +digraphs +mouse -sound -xfontset -dnd -mouseshape +spell -xim -ebcdic +mouse_dec +startuptime -xpm +emacs_tags +mouse_gpm +statusline -xsmp +eval -mouse_jsbterm -sun_workshop -xterm_clipboard +ex_extra +mouse_netterm +syntax -xterm_save +extra_search +mouse_sgr +tag_binary -farsi -mouse_sysmouse -tag_old_static
例えば、+luaとなっているのでマニュアルを眺めてみたところ、Luaチャンクを実行する、が見つかった。
確かに、違っていた。
$ vim.nox → :lua print(_VERSION) → Lua 5.2 $ vim.basic → :lua print(_VERSION) → E319: Sorry, the command is not available in this version
これらを使う日が来たら、noxをインストールすれば良い。
日本語マニュアル
UNIX系のシステムにはviが必ず入っているから覚えておけ、といわれていた。
その記憶がずっとあって、Linuxに触れ始めた頃からずっとviを使っていた。でこもれ、多分Vimだったのだろう。
色々とたどっていくと、こちらで日本語化をしていただいていることが分かった。
Github / vim-jp / vimdoc-ja - wiki
入手(最新版)
配布されているファイルをダウンロードしてきて、展開してみた。
この日は、バージョン9.0の日本語マニュアルがダウンロードできた。
$ wget https://github.com/vim-jp/vimdoc-ja/archive/master.tar.gz $ tar zxvf master.tar.gz $ ll 合計 2168 drwxrwxr-x 3 rohhie rohhie 4096 11月 13 07:56 ./ drwxr-xr-x 16 rohhie rohhie 4096 11月 13 08:22 ../ -rw-rw-r-- 1 rohhie rohhie 2205337 11月 13 07:56 master.tar.gz drwxrwxr-x 4 rohhie rohhie 4096 11月 9 15:18 vimdoc-ja-master/ ← 展開されたディレクトリ $ ll vimdoc-ja-master/ 合計 24 drwxrwxr-x 4 rohhie rohhie 4096 11月 9 15:18 ./ drwxrwxr-x 3 rohhie rohhie 4096 11月 13 07:56 ../ -rw-rw-r-- 1 rohhie rohhie 24 11月 9 15:18 .gitattributes -rw-rw-r-- 1 rohhie rohhie 0 11月 9 15:18 .gitignore -rw-rw-r-- 1 rohhie rohhie 888 11月 9 15:18 README.md drwxrwxr-x 2 rohhie rohhie 4096 11月 9 15:18 doc/ drwxrwxr-x 2 rohhie rohhie 4096 11月 9 15:18 syntax/
入手(使っているバージョンに合わせる)
全然使いこなせていないので、バージョンの違いにそれ程までに影響されるとは思わないけれど、一応マニュアルのバージョンを合わせてみようかと。
日本語マニュアルプロジェクトは、日々翻訳を更新してくれているようで、タグやバージョンは付いていなかった。
日本語マニュアルのプロジェクトをクローンしてみる。
$ git clone https://github.com/vim-jp/vimdoc-ja.git
これで、最新版の9.0が展開される。
$ cd vimdoc-ja $ ll total 28 drwxrwxr-x 5 rohhie rohhie 4096 Oct 9 12:36 ./ drwxrwxr-x 5 rohhie rohhie 4096 Oct 9 12:06 ../ drwxrwxr-x 8 rohhie rohhie 4096 Oct 9 12:56 .git/ -rw-rw-r-- 1 rohhie rohhie 24 Oct 9 12:06 .gitattributes -rw-rw-r-- 1 rohhie rohhie 0 Oct 9 12:06 .gitignore -rw-rw-r-- 1 rohhie rohhie 888 Oct 9 12:06 README.md drwxrwxr-x 2 rohhie rohhie 4096 Oct 9 12:56 doc/ drwxrwxr-x 2 rohhie rohhie 4096 Oct 9 12:56 syntax/
使っているバージョンを探してみる。
$ git grep "For Vim バージョン" $(git rev-list --all)
探した感じ、それっぽいコミットはこれかと。
OS | Vim version | Last change | それっぽいコミット |
---|---|---|---|
Ubuntu 22.04 | 8.2 | 2021 Dec 27 | f1001c3ad7655617951d3375d9a0754de37b5059 |
Ubuntu 20.04 | 8.1 | 2019 Jul 21 | d16f408837f09abd4b93e01cbb5f7377a7424601 |
Ubuntu 18.04 | 8.0 | 2017 Oct 28 | 0dc76a25bbeee98531b9e3156a4d4ea3540b2828 |
これらの「それっぽいコミット」にタグを付ける。
$ git tag 8.2 f1001c3ad7655617951d3375d9a0754de37b5059 $ git tag 8.1 d16f408837f09abd4b93e01cbb5f7377a7424601 $ git tag 8.0 0dc76a25bbeee98531b9e3156a4d4ea3540b2828
8.2のマニュアルを取り出してみる。
$ git checkout 8.2
このように、チェックアウトすると、ディレクトリの中身がそのバージョンのものに変わるので、これを配置する。
配置
ファイルを入手したけれども、どこへ配置すれば良いか。
展開されたファイルを 'runtimepath' が通った場所へ配置します。
vimdoc-ja - wiki
このruntimepathというディレクトリはどこのことなのか。
Qiita / vimで読み込まれるファイルについて
vimを起動して :set runtimepath とすると、設定内容が表示された。
$ vim
↓
:set runtimepath
↓
runtimepath=
~/.vim,/var/lib/vim/addons,
/etc/vim,
/usr/share/vim/vimfiles,
/usr/share/vim/vim82,
/usr/share/vim/vimfiles/after,
/etc/vim/after,
/var/lib/vim/addons/after,
~/.vim/after
Press ENTER or type command to continue
※1行で表示されたが、情報整理のためカンマで改行している。
rootでも日本語ヘルプを使いたいと思うと… /usr/share/vim/vimfiles というディレクトリを作って、そこに入れておけば良さそう。
名無しのvim使い / 日本語に翻訳されたvimエディタのヘルプをインストールして使用する。
■Ubuntu 22.04 & 20.04 $ sudo mkdir /usr/share/vim/vimfiles $ sudo cp -ar vimdoc-ja-master/doc /usr/share/vim/vimfiles/ $ sudo cp -ar vimdoc-ja-master/syntax /usr/share/vim/vimfiles/ $ sudo chown root:root -R /usr/share/vim/vimfiles/doc /usr/share/vim/vimfiles/syntax/
Ubuntu 18.04では、このディレクトリは /etc/vim へのシンボリックリンクになっていた。
■Ubuntu 18.04 $ sudo cp -ar vimdoc-ja-master/doc /etc/vim/ $ sudo cp -ar vimdoc-ja-master/syntax /etc/vim/ $ sudo chown root:root -R /etc/vim/doc /etc/vim/syntax/
さらに、vimrcに日本語ヘルプを優先するような設定を入れる。
/etc/vim/vimrc
set helplang=ja,en
※最後のところにでも追記しておけばOK。
これで通常使いのユーザーでも、rootでも、GVimでも日本語のマニュアルを表示することができた。
チュートリアル
チュートリアルは日本語版がパッケージに同梱されている。
以下で日本語チュートリアルが表示される。
$ vimtutor ja
これ、実際に最後までやってみたけれども、それだけで随分やれることが増える。
一度はやっておく価値があると思う。
さいごに
実は、この記事自体はUbuntu 22.04がリリースされる前に整理していたもので、今回少し整理し直した。
当時にチュートリアルを一通りやったことで、やれることは随分増えたけれども…すぐに忘れてしまう。
特にウィンドウ操作が覚えられなくて、本来なら1つのターミナルで処理できるところを、2つ開いたりしている。
あと、ファイラー的な画面も、もう少しうまく使えるようになったら、楽チンだろうなぁ。
ちゃんと覚えていれば便利なはずなのに。
WindowsのエディターもVimに乗り換えてみよう。
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他