Skip to content
Htkyama Blog

iPadでiVimを動かす

iPad, Vim1 min read

iOS向けのVimであるiVimをカスタマイズします。

  • terrychou/iVim: A Vim port to iOS

インストール

App Storeからインストールできます。

.vimrcの設定

iPad上では、.vimrcは見えません。

あらかじめ作成したファイルをiOS標準のファイル.appでVimフォルダに入れて、iVimにて:!mv vimrc ~/.vimrcなどとしなければならないです。

iVim特有の機能として、:idocでファイル.appを起動させてファイルを操作することもできるので、ベースとなるファイルをiVimで開くこともできます。

フォントのインストール

:idocにて、otf, ttfのフォントファイルを開くことにより、フォントをインストールすることができます。

利用可能なフォントは、:ifontにより一覧で表示できます。

この機能により、Nerd Fontも導入できます。

.vimrcに使用するフォントを設定します。ifontの後に:ifontで表示されたフォントの番号とサイズを設定します。

1ifont 5 18

プラグインの導入

Vim8 から標準でプラグイン機能が使えます。iVimもVim8ベースなので、プラグイン機能がそのまま使えます。

:!mkdir -p .vim/pack/plugins/startでプラグイン用のディレクトリを作成し、.vim/pack/plugins/startにプラグインのフォルダを入れることにより、Vimの起動時にそのプラグインが読み込まれます。 (上記pluginsの部分は、任意の名称にすることができます。)

skk.vim

iPadで外付けのハードウェアキーボードを使うと、日本語入力の候補表示が見づらいです。

代替の日本語変換としては、skk.vimが動作します。

.vimrcにSKK辞書の場所等を設定します。SKK-JISYO.LはあらかじめUTF-8に変換しておく必要があります。

1"
2" skk.vim
3"
4let g:skk_large_jisyo = '~/skk/SKK-JISYO.L'
5let g:skk_jisyo = '~/skk/skk-jisyo'
6let g:skk_auto_save_jisyo = 1

vim-devicons

Nerd Fontを表示できるようにします。

lightline.vim

ステータスラインのカスタマイズプラグインとして、lightline.vimがiVimで動きます。

lightline.vimに関する.vimrcの設定です。 Nerd Fontを使うとステータスラインのセパレーターやアイコンを表示することができます。

tablineの表示やファイルフォーマットのアイコンが表示されるようにしてます。 SKKのモードも表示するようにしてます。

1"
2" lightline
3"
4let g:lightline = {
5 \ 'colorscheme': 'iceberg',
6 \ 'active': {
7 \ 'right': [ [ 'lineinfo' ],
8 \ [ 'percent' ],
9 \ [ 'skkstatus', 'fileformat', 'filetype' ] ]
10 \ },
11 \ 'component': {
12 \ 'vim_logo': "\ue7c5",
13 \ },
14 \ 'tabline': {
15 \ 'left': [ [ 'vim_logo', 'tabs' ] ],
16 \ },
17 \ 'component_function': {
18 \ 'filetype': 'FiletypeWebDevIcons',
19 \ 'fileformat': 'FileformatWebDevIcons',
20 \ 'skkstatus': 'Skkgetmode'
21 \ },
22 \ 'tab_component_function': {
23 \ 'tabnum': 'TablineWebDevIcons',
24 \ },
25 \ 'separator': { 'left': "\ue0b0", 'right': "\ue0b2" },
26 \ 'subseparator': { 'left': "\ue0b1", 'right': "\ue0b3" },
27 \ }
28
29" ファイルフォーマットがunixのときの既定値
30let g:WebDevIconsOS = 'Darwin'
31
32function! FiletypeWebDevIcons()
33 return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype . ' ' . WebDevIconsGetFileTypeSymbol() : "\uf057") : ''
34endfunction
35
36function! FileformatWebDevIcons()
37 return winwidth(0) > 70 ? (strlen(&fenc) ? &fenc . ' ' . WebDevIconsGetFileFormatSymbol(): &enc . ' ' . WebDevIconsGetFileFormatSymbol()) : ''
38endfunction
39
40function! TablineWebDevIcons(n)
41 let l:bufnr = tabpagebuflist(a:n)[tabpagewinnr(a:n) - 1]
42 return WebDevIconsGetFileTypeSymbol(bufname(l:bufnr))
43endfunction
44
45function! Skkgetmode()
46 let _ = SkkGetModeStr()
47 return strlen(_) ? substitute(_, '\[\|\]', '', 'g') : ''
48endfunction

見栄えはこれで大分良くなったと思います。

© 2023 All rights reserved.
RSS