0%

iPad上的iVim安装及自动补全配置

起因

由于学校对电脑没有硬性要求,所以决定试一下用iPad代替笔记本,但是需要一个代码编辑器,虽然vs code也可以但是还是想要不需要网络在本地写代码,而且还是习惯用vim,所以最后还是选择了App Store里的iVim,现在来记录一下iPad上iVim的安装和配置。

安装和基本使用

首先,在App Store安装iVim,运行之后使用方法和vim相同,可以通过:ishare分享当前编辑的文件。启动iVim,默认路径在 “我的iPad > iVim” 目录下,在命令模式下输入:terminal可以打开ivish,iVim自带的shell,可以使用一些基本的命令,可以按下tab查看可以使用的命令。

安装插件

iVim自带有python3和lua,虽然带有ivish,但是ivish不能运行sh脚本,所以不能使用运行在外部shell的插件,但是能使用调用python的插件。

在terminal下输入ls -a可以查看iVim目录下.开头的隐藏文件,例如.vim/和之后创建的.vimrc。在terminal下输入mv .vim vim,让.vim目录能够通过“文件”打开,或者也可以在命令模式下输入:e .,然后选择.vim按下R,重命名为vim。由于iVim不带有git,所以不能通过配置插件管理器然后用:PluginInstall安装插件,所以我索性也没安装插件管理器,通过最原始的方法去GitHub上一个个下下来移动到vim目录,之后将vim改回.vim,重启iVim,就能加载插件了。

反之,另一种安装插件的方法,将下载的插件.zip文件移到iVim目录下解压,然后在terminal下输入cp -r xxx/* .vim/,也可以完成插件安装,之后还能用rm -rf删除下载的插件。

自动补全插件

大部分的插件都能通过上面的方法安装,但是我花了挺长时间弄自动补全插件的,所以特别记录一下。由于之前使用的Debian官方源带有youcompleteme,我之前用的一直都是ycm自动补全,配置参考这里

但是ycm需要clang支持,所以这里明显不能使用,于是了解到vim7.3之后内置了omni complete,于是按了ctrl+n,发现真的有基于文件内容的补全,但是omni支持tags补全,又经过一番搜索了解到可以通过ctags来生成C语言的tags。

在iPad上生成C语言的tags

如果手头上没有电脑,还有一个比较绕圈子的方法,App Store安装ish,apk add ctags build-base(换源自行百度),然后新建个目录,cp /usr/include/*.h c_src,然后运行ctags -R --C-kinds=+p --fields=+aS --extra=+q c_src,将生成的”tags”文件移动到iVim下,创建.vim/tags目录,将tags移动到创建的tags目录并重命名为c,然后编辑.vimrc,加入set tags+=~/.vim/tags/c,再按ctrl+n已经能补全C语言的函数了。

其他语言的应该也可以通过添加对应语言的tags来实现补全,如果使用python的话应该能使用python编写的python补全插件,这个应该比较好找,但是本人不使用python。

自动弹出补全框

虽然已经有了基于tags的补全,但是居然还需要手动触发,这个跟我的习惯还是不相符,于是又找到了autocomplpop插件(简称acp),去github下载然后安装。这时候我们再输入,发现已经能在输入两个字符的时候弹出补全框了,但是是基于文件的补全,再去.vimrc中加入let g:acp_completeOption = '.,w,b,t'为acp加入tags补全。

通过tab确认选择

在使用vim之前用vs和vs code时留下的习惯,既然都已经折腾了这么久了,所以还是再多折腾一下用tab来确认,在网上抄改的配置

1
2
3
4
5
6
7
inoremap <expr><tab> MayComplete()
func MayComplete()
if(pumvisible())
return "\<cr>"
endif
return "\<tab>"
endfunc

pumvisible()在menu显示时返回一个非0的值,也就是在显示补全菜单时按下tab就会返回enter,确认当前选择,否则就是正常tab。

结束

至此,iPad上的iVim就安装好了,并且配置了基于tags的C语言自动补全插件。