我想说,我折腾了很久编辑器,试了九种办法

最后我只成功了一种

但我依然想就我混乱的逻辑做下整理

一、一开始,我试图入手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代码补全的更多相关文章

  1. vim代码补全-spf13,YouCompleteMe

    vim代码补全 现在的图形界面的IDE(Integrated Development Environment)一般具有语法高亮,语法检查,自动补全功能,大大提高了编程的效率. vim作为文本编辑器其强 ...

  2. Windows 10环境安装VIM代码补全插件YouCompleteMe

    Windows 10环境安装VIM代码补全插件YouCompleteMe 折腾一周也没搞定Windows下安装VIM代码补全插件YouCompleteMe,今天在家折腾一天总算搞定了.关键问题是在于P ...

  3. jupyter notebook安装/代码补全/支持golang 踩坑记

    安装(不要用root) 安装anaconda3,然后ln -s bin目录下的jupyter命令到/usr/bin目录下 生成密码备用 敲ipython进入交互终端 In [1]: from note ...

  4. 在 Vim 中使用 pydiction 对 Python 进行代码补全

    Pydiction 允许你在 Vim 中实现 TAB 代码补全, 可以补全的内容包括:标准的.自定义的,以及第三方模块和包.外加关键字.BIFs,和字符串. Pydiction 由 3 个主要文件构成 ...

  5. 代码补全——Vim/Neovim中YouCompleteMe添加第三方库的支持

    参考链接: https://github.com/ycm-core/YouCompleteMe#c-family-semantic-completion https://cloud.tencent.c ...

  6. 新时代的Vim C++自动补全插件 clang_complete

    Vimer的福音 新时代的Vim C++自动补全插件 clang_complete   使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete .这一类的插 ...

  7. Jupyter Notebook主题字体设置及自动代码补全

    Jupyter Notebook用久了就离不开了,然而自带的主题真的不忍直视.为了视力着想,为了自己看起来舒服,于是折腾了一番..在github上发现了一个jupyter-themes工具,可以通过p ...

  8. vim python自动补全插件:pydiction

    vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.pyt ...

  9. [jetbrains系列] 外链第三方库+代码补全设置

    jetbrains系列的IDE真的是太好用了,有种相见恨晚的感觉. 在开发过程中第三方库是必不可少的,在开发的时候如果有一个可以补全的IDE可以节省查文档的时间. 举个例子:给pycharm配pysp ...

随机推荐

  1. Sea.js学习5——Sea.js的构建工具spm

    如果项目遵循推荐的标准目录结构: foo-module/ |-- dist 存放构建好的文件 |-- src 存放 js.css 等源码 | |-- foo.js | `-- style.css `- ...

  2. Java 使用Redis缓存工具的图文详细方法

    开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. (1)Java的安装配置可以参考我们的 Java ...

  3. 使用代理(WebProxy)爬虫

    关键代码: private Hashtable hash;//储存代理ip private WebProxy currentdaili; private int dailiExecMaxCount; ...

  4. VS2012打开解决方案崩溃或点击项目崩溃

    打开项目文件就VS2012就崩溃 解决方案: 步骤1:开始-->所有程序-->Microsoft Visual Studio 2012-->Visual Studio Tools-- ...

  5. 小调网 经典电影 豆瓣评分 tampermonkey脚本

    // ==UserScript== // @name 小调网 // @namespace http://tampermonkey.net/ // @version 0.1 // @descriptio ...

  6. Storm Topology及分组原理

    Storm的通信机制,需要满足如下一些条件以满足Storm的语义. 1.建立数据传输的缓冲区.在通信连接没有建立之前把发送的数据缓存起来.数据发送方可以在连接建立之前发送消息,而不需要等连接建立起来, ...

  7. DirectBuffer

    1.如何分配,分配是哪里的内存 ByteBuffer.allocateDirect()来分配(ByteBuffer.allocate()分配堆内内存),分配的是非Heap(堆外)的内存,不排除操作系统 ...

  8. XE6移动开发环境搭建之IOS篇(3):配置虚拟机,设置Mac安装环境(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.创建新的虚拟机 ...

  9. Nginx作为负载均衡服务器(Windows环境)

    一个最简单的负载均衡测试,不涉及到session复制,只是将请求分配到不同的服务器上去而已. 1.创建一个简单的web应用.只有一个index.jsp页面,,内容如下. <%@ page lan ...

  10. [VB.NET]取消按钮按下的默认事件响应

    大家应该有过这样的经历:有两个文本框a,b.通过编程,当我们在A中回车后,光标会移动到B文本框. 但是,不可避免的会听到一声“铛”的声音. 解决办法: 在Keydown或者KeyUp事件中,设置e.S ...