标签 Vim 下的文章

vim-go更新小记

自从上一次配置好Mac上的Golang Vim开发环境,基本上就没怎么动过。近两年过去了,Go已经升级到了1.7版本Vim-go截至目前也已经演化到了1.8版本了。社区的积极关注和使用,让Vim-go的作者Fatih Arslan备受鼓舞,于是近一年来,积极为vim-go添加新功能,发布新版本,并编写了vim-go的详细tutorial。这让我动了更新Vim-go版本的念头,于是就有了本篇内容。

已经记不得当初第一次配置vim-go时,vim-go的版本号是多少了。经过近两年的发展,vim-go已然正式成为Vim下Go开发环境的标准Plugin了。Go从当年的1.4升级到1.7,相关工具也跟着一起升级,比如oracle变成了guru,名字都换了。支持go的编辑器也逐渐增多并日益成熟,从最初vimliteIDE,到后来的eclipseIntelliJ Ideaatomsublime text以及vscode对golang都提供了支持。这样一来,无论你之前是哪种IDE的拥趸,你都能找到得心应手的环境走入Golang世界。

我个人一直用vim,sublime text3曾经玩过,没玩熟,卸了。目前机器上还装了一份vscode,感觉在IDE领域中,微软的影响力和成熟度不容小觑,vscode + golang extension从入门门槛来看,还是非常低的。即便vim-go进化到1.8版本,仍然不如vscode安装体验来得方便。当然这不全是vim-go的问题,而是vim的设计哲学所致。

无论是vim-go还是vscode golang plugin,都要依赖golang的周边工具,主要包括gocodegoimportsgurugodefgolintgometalinter等。在这方面,vim-go提供了安装依赖工具的方法“:GoInstallBinaries”,或在外部通过:vim -c “GoInstallBinaries” -c “qa”安装(在安装vim-go之后);而vscode则会自动探测其所依赖的工具是否安装,如果没有安装,会在vscode的下方给出提示,点击提示,会安装相应的工具。

BTW,自从近期golang官网:golang.org不用再翻墙后,go get下载golang.org域名下面的各种工具也简单了许多,大陆的Gopher们再也无需担心go package下载的问题了。

升级vim-go之前,建议先备份好.vimrc文件:

cp .vimrc .vimrc.bak.20160908

vim-go插件安装由很多方法,在vim-go tutorial中,vim-go作者选择了vim-plug,而没有用之前的vim插件管理工具vundle.vim,方法都是大同小异:

下载vim-plug:

$curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 67682  100 67682    0     0   7020      0  0:00:09  0:00:09 --:--:-- 12576

安装vim-go:

在.vimrc中填写如下内容:

call plug#begin()
Plug 'fatih/vim-go'

然后执行”:PlugInstall”即可。

在安装依赖工具期间,发现mac原生自带的vim(macvim,又叫mvim,安装在/usr/local/bin/mvim)版本还是7.3.xx版本,无法满足一些工具的要求,于是通过brew安装vim(安装在/usr/local/Cellar/vim/7.4.2334/bin/vim),然后通过/usr/bin/vim的一个符号链接连过去即可。

$ll /usr/bin|grep vim
lrwxr-xr-x     1 root   wheel        38  9  8 16:21 vim@ -> /usr/local/Cellar/vim/7.4.2334/bin/vim
... ...

注意,考虑要安装neocomplete以支持实时completion(补齐),vim需要有lua支持,因此执行brew install时要带上–with-lua参数:

brew install vim --with-lua

vim-go升级版安装后,可按照vim-go-tutorial中的步骤,体验一下vim-go的强大,同时对.vimrc进行相关配置,并安装缺失的vim插件,比如neocomplete、UltiSnips等。我针对vim-go 1.8配置好的.vimrc在这里可以下载到。

具体细节这里就不提了,如果还有哪些细节不清楚或实验没成功,可以回过头参考我那篇《Golang开发环境搭建-Vim篇》。

开始使用Markdown写Blog

近期发了一些带有大量代码的Go技术文章,结果文章中的代码样式被大家鄙视了,比如评论中的“不忍直视”、“这代码看得让人难受”等。于是我决定花些时间尝试做些改变。

博客系统

目前使用的这个博客系统是放在DigitalOcean VPS的Wordpress 3.2.1。在迁移到VPS之前,我的博客是一直托管在同事的一个托管主机上的,当初从blogbus迁移到他的托管WordPress主机时使用的就是WordPress 3.2.1版本,这两年一直未动,目前WordPress版本都4.3.1了。WordPress 3.2.1有很多bug,尤其是其安全漏洞,今年就被黑过几次,为此在后台将blog纳入git version管理,这样被黑后就可以很容易恢复。但将版本升级到WordPress新版我还是担心的,主要是担心升级失败,尤其是>数据库表变化较大,担心无法恢复。

不过由于历史“负重”太大(900多篇),我很难将WordPress顺利平滑的切换到一些新博客系统,比如golang开发的hugoJekyllOctopress等,只能继续坚守WordPress。

由于经常在文章里贴代码,也曾尝试过使用一些语法高亮的插件,但目前使用的富文本编辑器CKEditor似乎总是与语法高亮不兼容,试了N多都不好用,尤其是在html编辑器和富文本编辑器切换时高亮>部分代码内容被自动转码,于是放弃。这样在文章中只能暂时用Courier New字体来“高亮”代码部分。

Crayon Syntax Highlighter

在尝试之初思路主要还是想找到一款与CKEditor兼容的好用的语法高亮插件,在网上找到一个插件组合:CKEditor + SyntaxHighlighter CKEditor Button + Auto-SyntaxHighlighter。安装后简单>测试了一下发现的确比之前找的几款插件强。输入代码时只需要点击CKEditor工具栏上的一个Code Button,SyntaxHighlighter CKEditor Button会打开一个源码输入对话框,选择源码的语言种类贴入源码即可,还可以在”高级”tab中设置一些选项,是否带行号等。这个组合最大的好处就是无需切换到html编辑器手工输入html tag。

不过测试一段时间后还是发现了这个插件组合的问题,那就是不支持Go语法。Auto-SyntaxHighlighter内部使用的是syntaxhighligter的js,后者已经停止更新,并且即便是最新版本也不支持golang。我只能fork一个Auto-SyntaxHighlighter的repo,并“照猫画虎”的Auto-SyntaxHighlighter增加Go语法文件:shBrushGo-min.js和shBrushGo.js,并修改SyntaxHighlighter CKEditor Button的js文件,增加Go选项。不过try后,发现高亮格式依旧不对,最初以为是我修改的不正确,后来发现即便是用其支持的C/C++代码,高亮格式依旧有问题,我怀疑是与我当前的theme不兼容所致。

在知乎上看到人们都推荐Crayon Syntax Highlighter这个语法高亮插件,于是想最后再尝试一下。安装后发现Crayon Syntax Highlighter的确强大,我将字体设置为monaco, 字号14,主题:monokai,其渲染出来的高亮代码和我在本地mac上的几乎一模一样。不过小问题还是有的,比如: 行号无法去掉,浮动工具栏不好用等。

Crayon插件的最大的问题还是使用不便:需要切换到html源码editor中手工加入:
<pre lang:"go"> </pre>

如果再切换到富文本编辑器后,再切回来,

<pre> </pre>

之间的文本就会被转码,这极大增加了使用门槛。在没有理想办法之前,只能将就着用吧。

以上已经让我折腾我几个小时了,凌晨一点,睡。

Markdown on Save Improved

早上醒来,想到了Markdown,也许是最后稻草了。以前一直以为WordPress版本较低,很多Markdown plugin都不支持。但今天先不管那些了,装上试试。我找到了Markdown on Save Improved,这款插件最大的好处就是可以在每篇文章级别上加markdown开启选项。目前该插件已>经停更,并且其作者基于该插件开发了”Jetpack’s Markdown module”,Jetpack太大,对WordPress版本要求也太高,于是我就选择了”Markdown on Save Improved”,满足我使用就可以了。安装插件后,有一个“Markdown on Save Improved Convert to Jetpack”提示,似乎点击一个按钮,就可以将该插件转换为”Jetpack’s Markdown module”,不过我>也不能肯定,因为从表面上看不出来,没有什么变化。

“Markdown on Save Improved”给我的最大惊喜是它居然兼容Crayon Syntax Highlighter,我将Crayon的默认语言设置为go,这样markdown标记的代码块后者渲染后展现出很理想的高亮效果。

package main

import "fmt"

func main() {
    fmt.Println("Hello, MarkDown and SyntaxHighlighter")
}

至于Markdown的预览,可以在stackedit.io上来做。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats