vim--golang代码补全
我想说,我折腾了很久编辑器,试了九种办法
最后我只成功了一种
但我依然想就我混乱的逻辑做下整理
一、一开始,我试图入手ipad编码软件,大概9美金吧,叫Textastic。我试图用它的近亲来试验Textastic Mac Trial看看能否代码补全. 我安装了golang.tmbundle. 语法高亮和snips是有的。可惜没有补全。
二、我想,听说TextMate是Textastic Mac Trial的近亲,何不试试TextMate?于是下载安装
mkdir -p ~/Library/Application\ Support/Avian/Pristine\ Copy/Bundles /Users/x/Library/Application Support/TextMate/Managed/Bundles>cd ~/Library/Application\ Support/Avian/Pristine\ Copy/Bundles /Users/x/Library/Application Support/Avian/Pristine Copy/Bundles>git clone git://github.com/syscrusher/golang.tmbundle.git
同样安装了golang.tmbundle可惜按ESC如何敲打都呼唤不出TextMate代码补全。
三、我想了想,既然不会弄TextMate那就还是用回我的vim吧
- 于是开始安装vim-go的插件,
Plug 'nsf/gocode', { 'rtp': 'vim', 'do': '~/.vim/bundle/gocode/vim/symlink.sh' }
Plug 'fatih/vim-go'
- 之后,:GoInstallBinaries 由于众所周知的原因,golang包要特殊安装
go get -u golang.org/x/tools/cmd/guru go get -u golang.org/x/tools/cmd/gorename go get -u golang.org/x/tools/go/loader
go get -u golang.org/x/tools/go/buildutil go get -u golang.org/x/tools/go/ast/astutil go get -u github.com/kisielk/errcheck
go get -u github.com/zmb3/gogetdoc
- 比较坑的是 gogetdoc因为只支持go1.6,我的是go1.5.1
vi ../zmb3/gogetdoc/ident.go +142编译不过,需要手动加函数修复...
- 然后我试图呼唤'omnifunc' compelete,貌似还不成
原因受SirVer/ultisnips的快捷键冲突,我删除了SirVer/ultisnips
- OK,这曲线救国啊 Bingo,一些自动补全的快捷键
Ctrl+P 向前切换成员 Ctrl+N 向后切换成员 Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字 Ctrl+Y 表示退出下拉窗口, 并接受当前选项
- 其他补全
Ctrl+X Ctrl+L 整行补全 Ctrl+X Ctrl+N 根据当前文件里关键字补全 Ctrl+X Ctrl+K 根据字典补全 Ctrl+X Ctrl+T 根据同义词字典补全 Ctrl+X Ctrl+I 根据头文件内关键字补全 Ctrl+X Ctrl+] 根据标签补全 Ctrl+X Ctrl+F 补全文件名 Ctrl+X Ctrl+D 补全宏定义 Ctrl+X Ctrl+V 补全vim命令 Ctrl+X Ctrl+U 用户自定义补全方式 Ctrl+X Ctrl+S 拼写建议
四、我这时看到了补全里不用键入c-x,c-o就可以的neocomplete,于是安装,现在golang的补全看起来更自动化了。我喜欢neocomplete比ycm的安装简洁。
五、之后我想,既然研究了这么多,干脆把statusline也弄酷炫一点吧,于是安装了vim-airline。迁移替换了一些原有的statusline配置。
" for airline
" let g:airline_section_a (mode, crypt, paste, spell, iminsert)
" let g:airline_section_b (hunks, branch)
" let g:airline_section_c (bufferline or filename)
" let g:airline_section_gutter (readonly, csv)
" let g:airline_section_x (tagbar, filetype, virtualenv)
" let g:airline_section_y (fileencoding, fileformat)
" let g:airline_section_z (percentage, line number, column number)
" let g:airline_section_error (ycm_error_count, syntastic, eclim)
" let g:airline_section_warning (ycm_warning_count, whitespace)
function! AirlineInit()
let g:airline_section_a = airline#section#create(['mode', ' ', 'branch'])
let g:airline_section_b = airline#section#create_left(['hunks','file','%Y'])
let g:airline_section_c = airline#section#create(['%F',' ','',' ','%B'])
let g:airline_section_x = airline#section#create(['%{strftime("%c")}'])
endfunction
autocmd User AirlineAfterInit call AirlineInit()
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
" unicode symbols
let g:airline_left_sep = '»'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
let g:airline_symbols.crypt = '<U+1F512>'
let g:airline_symbols.linenr = '␊'
let g:airline_symbols.linenr = ''
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.spell = '<U+A7A8>'
let g:airline_symbols.notexists = '∄'
let g:airline_symbols.whitespace = 'Ξ'
六、neocomplete之外好像还有个neosnip没弄呢。
Plug 'Shougo/neocomplete' Plug 'Shougo/neosnippet' Plug 'Shougo/neosnippet-snippets'
这个neosnip可以指定自己个性化的snip所存在的位置,其他选项我不是很懂,大意就是快捷键<C-k>
let g:neosnippet#snippets_directory='~/.vim/bundle/vim-snippets/snippets'
" for neosnippet Plugin key-mappings.
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
xmap <C-k> <Plug>(neosnippet_expand_target)
" SuperTab like snippets behavior.
" imap <expr><TAB>
" \ pumvisible() ? "\<C-n>" :
" \ neosnippet#expandable_or_jumpable() ?
" \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
smap <expr><TAB> neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
" for conceal markers.
if has('conceal')
set conceallevel=2 concealcursor=niv
endif
七、回想下,ipad上怎么才能很舒服的写golang呢?似乎问题没有解决耶。
vim--golang代码补全的更多相关文章
- vim代码补全-spf13,YouCompleteMe
vim代码补全 现在的图形界面的IDE(Integrated Development Environment)一般具有语法高亮,语法检查,自动补全功能,大大提高了编程的效率. vim作为文本编辑器其强 ...
- Windows 10环境安装VIM代码补全插件YouCompleteMe
Windows 10环境安装VIM代码补全插件YouCompleteMe 折腾一周也没搞定Windows下安装VIM代码补全插件YouCompleteMe,今天在家折腾一天总算搞定了.关键问题是在于P ...
- jupyter notebook安装/代码补全/支持golang 踩坑记
安装(不要用root) 安装anaconda3,然后ln -s bin目录下的jupyter命令到/usr/bin目录下 生成密码备用 敲ipython进入交互终端 In [1]: from note ...
- 在 Vim 中使用 pydiction 对 Python 进行代码补全
Pydiction 允许你在 Vim 中实现 TAB 代码补全, 可以补全的内容包括:标准的.自定义的,以及第三方模块和包.外加关键字.BIFs,和字符串. Pydiction 由 3 个主要文件构成 ...
- 代码补全——Vim/Neovim中YouCompleteMe添加第三方库的支持
参考链接: https://github.com/ycm-core/YouCompleteMe#c-family-semantic-completion https://cloud.tencent.c ...
- 新时代的Vim C++自动补全插件 clang_complete
Vimer的福音 新时代的Vim C++自动补全插件 clang_complete 使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete .这一类的插 ...
- Jupyter Notebook主题字体设置及自动代码补全
Jupyter Notebook用久了就离不开了,然而自带的主题真的不忍直视.为了视力着想,为了自己看起来舒服,于是折腾了一番..在github上发现了一个jupyter-themes工具,可以通过p ...
- vim python自动补全插件:pydiction
vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.pyt ...
- [jetbrains系列] 外链第三方库+代码补全设置
jetbrains系列的IDE真的是太好用了,有种相见恨晚的感觉. 在开发过程中第三方库是必不可少的,在开发的时候如果有一个可以补全的IDE可以节省查文档的时间. 举个例子:给pycharm配pysp ...
随机推荐
- centos网卡eth1变成eth0修改方法
centos网卡eth1变成eth0修改方法 2013年03月29日 ⁄ Linux基础 ⁄ 共 406字 ⁄ 暂无评论 ⁄ 被围观 8,266 views+ 虚拟化中,从模板克隆出来的虚拟机网卡都会 ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十四)之漏掉的客服消息
前言 不知不觉已经十四篇了,其实已经没有什么可写了.但是突然发现layim中带的客服功能没有用到.于是乎,抽点时间完成吧.其实之前的工作已经把客服功能完成了一大半,剩下的我们稍微调整即可.今天的演示我 ...
- 【uTenux实验】中断处理
中断处理是一个比较有意思的东西.uTenux的中断处理包括了处理外部中断.CPU异常等.他是OS中任务无关部分.因此,当中断到来的时候OS会停止任务调度,不会发生任务切换.直到程序从中断中返回. uT ...
- STM32F4 SPI2初始化及收发数据【使用库函数】
我的STM32F4 Discovery上边有一个加速度传感器LIS302DL.在演示工程中,ST的工程师使用这个传感器做了个很令人羡慕的东西:解算开发板的姿态.当开发板倾斜时候,处于最上边的LED点亮 ...
- js中this的问题
Javascript的this用法 this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ ; } 随 ...
- SQL 养成一个好习惯是一笔财富
来源:MR_ke 链接:http://www.cnblogs.com/MR_ke/archive/2011/05/29/2062085.html 我们做软件开发的,大部分人都离不开跟数据库打交道,特别 ...
- SQL Error (1130): Host '192.168.1.126' is not allowed to connect to this MySQL server
通过HeidiSQL连接MYSQL数据库报错: SQL Error (1130): Host '192.168.1.126' is not allowed to connect to this MyS ...
- java基础要点
Java语言是现在比较常用的编程语言,因为Java语言可以编写桌用程序,也可以编写web程序,还能编写嵌入式程序.这是由于相比脚本语言,Java 的运行速度要快.而对于底层语言,Java与平台无关,可 ...
- [ActionScript 3.0] AS3.0将图像的Alpha通道转换为黑白图像(复制通道方式)
import flash.display.BitmapData; /** * 将图像的Alpha通道转换为黑白图像 */ var p:Point = new Point(0,0); var bmpd: ...
- 全面了解 Linux 服务器 - 1. 查看 Linux 服务器的 CPU 详细情况
1. 查看 Linux 服务器的 CPU 详细情况 判断依据: 具有相同的 core id 的 CPU 是同意个 core 超线程. 具有相同的 physical id 的 CPU 是同一个 CPU ...