春节在家,偶尔要出门在外。出门在外的时候,没有电脑可以写代码。那么代码瘾上来了怎么办呢?我在想能不能在手机上写代码呢?
手机远程电脑是一种方式,但是远程开发这种方式,它的要求比较高,首先你要有台可以远程开发的电脑(24小时),而且你的手机网络环境要不卡。
然后你的流量还不缺。
因为我经常出入地铁,地下室等网络条件不稳定的地方,所以远程开发这种方式有局限性。
那么能不能直接在手机上搭建开发环境呢?今天它来了。以java为例,其他语言理论上也是可以的。
全屏观看
Termux官网:
https://termux.com/
官网推荐下载地址:
https://f-droid.org/packages/com.termux/
为了操作方法,我建议使用电脑ssh连接手机中的 termux来操作,连接方法见:
安装openssh
启动sshd服务
这样手机上就安装好了 ssh并启动了服务。
哇,竟然真可以!这样直可以把安卓手机当Linux用啦!我在继续研究一下。
设置自动启动ssh服务
手机查看当前用户名
我的显示结果为:
手机查看当前ip
我的手机当前的ip为 :192.168.101.156
修改密码
pc连接ssh
输入我新设置的密码 123456,成功进来啦!!!
默认的只有一行,没有⬅️ ➡️ 按键使用起来不太方便,我自定义了按钮。
详细说明:https://wiki.termux.com/wiki/Touch_Keyboard
简洁教程:
编辑 文件,文件中写入以下内容:
在Termux中编辑这个文件哈,如果已经进入了Linux发行版本,要用暂时退出到termux;
使用配置立马生效:
我想在Termux 安装jdk11试了几种方式没有安装成功,安装jdk8到是可以成功。所以想安装个发行版本试试,看看能否成功。
Termux提供了一个proot-distro软件包,用于管理Termux内部的Linux发行版。据说几乎没有性能损失。
您可以通过执行以下命令安装该实用程序
安装proot-distro
目前,它支持以下发行版:
Alpine Linux(别名:alpine)-最小的可用发行版。
Arch Linux(别名:archlinux)
Debian 10 Buster(别名:debian-buster)
Kali Nethunter(别名:nethunter)-当前只有最小的构建。
Ubuntu 18.04 / 20.04(别名:ubuntu-18.04 / ubuntu-20.04)
要安装发行版,只需运行以下命令(假设已安装proot-distro):
我安装的 是,如下命令:
我的执行结果如下:
安装非常快,我都在怀疑是否真的安装成功了。
安装以后,用来登录。我的登录命令如下:
发现登录后就直接是root权限了,有点懵!ubuntu 就 25MB吗?
查询系统版本:
发现现在的版本确实是ubuntu 20.04版本了,我想这个可能是精简版本的吧。
这是可用的proot-distro功能的基本概述:
- -显示受支持的发行版及其状态。
- -安装发行版。
- -启动分发的根外壳。
- -卸载发行版。
- -重新安装发行版。
运行proot-distro help以获取内置的使用信息。请注意,每个命令(“ list”除外)都有自己的内置用法信息,可以通过提供“ --help”作为参数来查看它们。
设置自启动ubuntu-20.04
每次手动启动 ubuntu很麻烦,还是设置成自启动方便一些。
自从使用了oh my zsh后,感觉就回不去啦,漂亮的颜色,实用的插件。必须配置一下。
更新一下apt-get
安装zsh
查 zsh位置
一般位置
切换到,执行下面命令:
这个时候如果重启shell你可能会发现,一些常用命令无法使用了,比如之前可以正常使用的:vim。
所以把termux带的命令加到环境变量里,修改zsh的环境变量文件。
增加以下内容:
这样就可以正常使用之前在TERMUX中安装的一些命令了。
重启shell 就可以使用zsh了,下面我们来安装一下oh my zsh插件。
如果访问github不卡,在线安装方法可以参考:
《Oh My ZSH让你的终端美如画》
如果访问github卡,可以使用离线安装方法:
《CentOS7安装Oh My ZSH解决raw.github.com访问不畅》
这里我使用的是离线版本安装方式,因为比较快也省的我安装插件了。
下载Oh My ZSH离线安装包
https://download.csdn.net/download/lxyoucan/15178337
解压至用户目录
注意⚠️:如果用户目录中已经有请先备份。
上传到用户目录比如:,并使用zip命令解压,比如:
- 文件是Oh My ZSH配置文件
- 是zsh默认配置文件,shell初始化时先加载它,环境变量一般在这里设置。
解压以后,重新进入shell就发现 Oh My ZSH已经可以正常使用了。
环境变量迁移
把你的环境变量信息,复制粘贴到 就可以了。
下载jdk11我下载的是解压版本的:
解压:
随便解压一个目录就可以了。
我解压的目录是:
修改环境变量配置,增加如下内容:
这样jdk就配置完成了。
在我设置完成zsh后,我发现在编译java代码的时候会遇到中文乱码的问题。之前在用bash时是没有中文乱码的,我猜测是哪个地方的编码配置有问题导致的。然后我设置一下中文环境就解决了中文乱码的问题了,也许有更简单的解决办法。
查看当前语言环境
查看当前系统是否有中文语言包
执行结果如下:
如果没有中文则,安装中文语言包。
修改系统环境变量为中文
然后,修改/etc/environment(在文件的末尾追加):
再修改/var/lib/locales/supported.d/local(没有这个文件就新建,同样在末尾追加):
最后,执行命令:
对于中文乱码是空格的情况,安装中文字体解决。理论上下面中文字体选一个就可以了。
以上,问题解决,中文显示正常。😃
现在是不是中文环境,可以运行 命令看一下。
我在使用这个手机linux中,使用的最多的软件可能就是vim文本编辑器啦,插件肯定不能少。
文件管理好用的插件
安装方法:
https://github.com/preservim/nerdtree
~/.vim/pack/vendor/start/nerdtree
安装方法:
https://github.com/yianwillis/vimcdoc
~/.vim/pack/foo/start/vimcdoc
创建这个文件夹就可以了。
上面这两个插件,我电脑中本身就有,直接复制过去就可以了。
注意:⚠️最终我没有使用YouCompleteMe,而是使用了SpaceVim体验更佳。所以此节可以跳过!
如果你的vim不支持python3,处理方法可以参考此节。
直接按照官方文档安装即可。https://github.com/ycm-core/YouCompleteMe
这是我的安装心得。
《macOS big Sur安装VIM插件YouCompleteMe爬坑记录》
细节操作参考上面的链接就可以了,我大概记录一下,我执行过的命令吧!
因为我之前使用Termux安装的vim不支持python3,所以要用apt在安装一下,apt安装完成后,发现vim还是以前的版本的。
查询是否支持python3
理论上这样组件就可以正常工作了!
TODO:
这个组件我在mac上安装成功了,直接把mac上的程序包放到ubuntu上使用,无法正常启动。因为春节在家没有网,全靠流量的,这个组件太大,等有网络在从头搭一下试试。
在我绞尽脑汁在安装各种vim插件,来让我在vim下开发java成为可能的时候。无意中发现了这个神器!
评价:**简单!方便!舒服!**安装体验对比其他的vim插件来说简直太舒服了。
安装其他的插件,各种踩坑,比如:YouCompleteMe,coc.nvim 实现java智能提示。过程中总会有点磕磕绊绊,网上搜索到解决办法,真的没这个爽,一步到位。一条龙服务的感觉。
安装非常简单,官方中文文档:
https://spacevim.org/cn/quick-start-guide/
一键安装
一点点小缺点:因为手机性能是无法跟电脑比的,所以在使用这个SpaceVim插件以后,用vim打开文件会有一些慢,但是打开以后就不算慢了。毕竟鱼和熊掌不能兼得。
字体乱码问题
使用Homebrew安装nerd-font字体,顺序运行如下命令行:
设置iterm
在依次点击(或者直接使用快捷键command+O)Profiles->Open Profiles…,选择一个你的Profiles,我的是⭐️Default,点击Edit Profiles…,在弹出界面选择Text,在界面底部勾选☑️Use a different font for non-ASCII text,选择Change Font,在Family栏下方找到并选定DroidSansMono Nerd Font或者是Hack Nerd Font。退出Profiles界面。
查看:
Java智能提示支持
《使用 Vim 搭建 Java 开发环境》https://spacevim.org/cn/use-vim-as-a-java-ide/
配置javalsp
这里我部署在 目录,这个可以根据需要自行修改,如果修改了,则上面配置文件中的路径也要同步修改。
下载eclipse.jdt.ls
默认下载速度很慢,推荐使用迅雷下载。
把下载下来的文件解压到 目录。我解压后的路径如下:
修改配置
编辑SpaceVim配置文件
SpaceVim默认是不开启java智能提示的,需要手动开启。增加以下内容:
这里的 的值根据实际部署位置调整即可。
特别是项,因为jar的版本一直在升级,很有可能不一样!
根据当前系统,选择对应的配置文件:
config_win, Windows 系统
config_mac, MacOS 系统
config_linux, Linux 系统
配置完成以后,下一次打开vim 会自动安装一些插件。
虽然下次打开.java文件的时候,就可以有语法检查,代码智能提示啦。到这我们的最初目标基本就实现了。
SpaceVim 与普通 vim 切换
我这里说的普通vim就是指几乎不安装插件的vim。
SpaceVim 虽好,但是相对普通的vim来说太重了些。在做源码开发(比如:Java)开发,我会首选 SpaceVim来编辑代码,毕竟智能提示很好,质变!
在电脑上运行 SpaceVim速度不成问题,但是手机上还是有明显卡顿的。
但是如果普通就编辑个配置文件,修改参数的。在手机上运行 SpaceVim还是太卡了。
我在手机(坚果R1)上测试加载速度:
- 普通vim 几乎秒开,加载速度不到1秒,几乎感觉不到延迟。回车按下时vim就打开了。
- 安装了SpaceVim插件的vim,加载速度在 5~7秒。 这个体验就有些难受了。
macOS电脑上,打开SpaceVim,加载速度不到1秒,所以电脑上不用切。
我的想法:
普通vim – 普通文件修改
SpaceVim --当编程IDE使用
切换到普通vim
安装完SpaceVim后
- 文件被 备份成 ,并且会新建一个软链接, ->
- ->
那么我们只需要把软连接修改成~/.vim即可使用原来的配置了。
关于配置文件,建议保存在
切换到SpaceVim
别名快捷切换
如果要经常切换,那么上面的命令要经常执行。记我可记不住,就算记住了也麻烦。所以加个别名吧!
编辑增加以下两行。
以后想使用 vim普通版本就执行:
想使用SpaceVim就执行:
这样就可以快速切换了。
neovim(推荐)
如果感觉使用上面的切换还是感觉麻烦,那么还有一个办法。就是安装neovim用于使用SpaceVim插件。普通的vim用于普通的文件的编辑。
SpaceVim官网比较推荐使用neovim的。
- neovim 启用 SpaceVim
- vim 不启用 SpaceVim
这样以后普通 文件就 编辑写代码就用 这样就不用切来切去了。
因为很多插件都要求有python3支持,所以使用以下命令安装。
安装完成以后,使用nvim命令编辑文件默认就有SpaceVim 功能了。
让vim使用普通形式:
这样就可以完成配置了。
为什么可以实现这样的功能呢?
因为在安装了SpaceVim后,vim做了软链接,其实nvim也做了软链接。
如下:
->
知道这个原理就可以实现修改软链接来配置是否开启SpaceVim.
一开始折腾手机上的操作系统时第一个想折腾的就是图形界面,因为总觉得只有能展现图形界面了我才认为他是真正的操作系统。
毕竟手机屏幕小,真正用的时候我发现图形化的必要不是很大,本文暂时就不写了。
有需要的朋友可以看一下我之前写的文章。
《Android手机运行图形界面的LINUX环境》
当然如果通过电脑远程控制手机图形界面,那就可以类似老罗的TNT了,而且还真有一定生产力。
字体文件下载
把这个字体文件上传到 目录即可解决SpaceVim 乱码的问题。
没有乱码真舒服!这下感觉已经很代完美了!
默认的欢迎语,刚开始还有点帮助,熟练了就不需要了。
修改欢迎语,愉悦自己!
2021年2月27日补允。
上面的SpaceVim 确实不错,也很适合vim新手,它的集成很方便。在我看来SpaceVim就像是一台组装好的电脑主机,并且帮你做了一系列的优化。自己安装vim组件就像是自己装机,要踩很多坑。
如果在性能好的电脑上使用,我倾向与直接使用SpaceVim 简单而且好看与IDE很接近。但是在手机上做java开发,我近期发现 SpaceVim在我手机上并不稳定。
开发就几个java文件的小项目没什么问题,在我开发spring boot项目的时候,会发现在写完一个java类,:w保存以后,大概率会失去响应,整个界面就是卡死的状态按什么都没有反应,这种卡死现象,需要等待5分钟以上,才能有可能响应过来,我是没时间等待它的。无奈只能舍弃当前的session重新打开一个session继续开发。
出现这样的原因猜测:
- 主要原因手机性能比较低,执行某种运算太卡导致。
- 在:w保存后可能会触发一个编译操作,来检测语法错误或者为了更好的智能提示。因为spring boot项目文件和依赖就相对多一些,编译会比较久,就导致页面卡住了。
- SpaceVim 默认安装了很多组件,有可能是哪个组件在这个状态下遇到bug了,然后就卡住了。
为了探究这个问题,我在电脑上用SpaceVim 开发了同一个项目测试了一下,在执行:w瞬间电脑风扇声音会明显变大,界面上也会卡1到3秒这样子的。不过因为电脑运算要快很多,这个影响几乎可以忽略不计。
假如就是因为这个语法检测插件卡顿的。这个语法检测插件还算实用,但是也不是必须的,毕竟本身在代码编译的时候就能看出来代码错在哪。在相对低性能的手机上,这个组件在开发spring boot项目中代价有些大,每次保存一个文件就会整个项目编译一下,这个手机性能吃不消。
这种现象频发,我后来就无奈的直接使用没有智能提示的vim写代码。
手机上,我决定大项目用只包含必要插件的vim,小项目使用SpaceVim (nvim)来提升开发体验。
用习惯IDE的我,用没有智能提示的编辑器写代码,还是有些不适应的。智能提示用久了,有些方法名,都不会背了。对效率还是有极大的影响的。后来的我决定自己安装vim插件先解决智能提示的需求。
我目前安装的插件如下:
- Vundle – 插件管理器
- artur-shaik/vim-javacomplete2 – Java语法智能提示插件
- Shougo/deoplete.nvim – 智能提示通过组件。
安装方法不算难,详细了解点这面的项目主页查看就好了。
说说我遇到的一些小坑吧。主要在安装javacomplete2时遇到过一些坑。
- 需要python3支持的vim或者nvim,如果不支持会报错,这个文章前面也有说过
- 如果报javavi相关的错,要自己手动编译一javavi,没配置maven环境就要先配置一下。
- 智能提示的误解:插件安装完成了但是没有智能提示,我本以为我又安装错误了。但是没有报任何错误啊,这个项目主机的效果图里提示很顺滑,为什么我的代码没有任何提示呢?后来发现原来默认情况下如果需要提示需要按 两组连续按就有效果了。后来我觉得按起来麻烦,我就用替代了,配置如: 这样舒服些了。如果能像IDE在录入的时候自动提示就好了,后来发现只要安装Shougo/deoplete.nvim就可以输入时自动提示了。
我的配置如下仅供参考。
总算是折腾完了,还是有一些收获的。手机中开发大型项目还是不太方便。但是如果只是简单修改一下代码,小bug修复还是可以实现的。
如果出去玩,客户现场出故障临时用来维护还是很不错的。
因为我通勤很久,对我来说还是很有帮助的。地铁上突然在有灵感,写写代码也不错的。
如果配合蓝牙键盘的话,还是具有一定的生产力的。但是这样就少了便携性啦。
《PRoot》https://wiki.termux.com/wiki/PRoot
《ubuntu18.04修改系统语言为中文》https://uscwifi.blog.csdn.net/article/details/83052915
《ubuntu中文支持,及中文乱码问题》https://www.centos.bz/2017/12/%E8%A7%A3%E5%86%B3ubuntu%E7%9A%84%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81%E9%97%AE%E9%A2%98/
《oh my zsh》https://ohmyz.sh/
《Oh My ZSH让你的终端美如画》
《CentOS7安装Oh My ZSH解决raw.github.com访问不畅》
《SpaceVim图标及部分字符显示乱码》
https://blog.csdn.net/Vinc_chen/article/details/89365832
《SpaceVim入门指南》https://spacevim.org/cn/quick-start-guide/
《使用 Vim 搭建 Java 开发环境》https://spacevim.org/cn/use-vim-as-a-java-ide/
《linux软链接的创建、删除和更新》
https://blog.csdn.net/m290345792/article/details/78518360