Sublime中配置GoSublime插件,使其能够对自己编写的Go代码进行自动提示

使用sublime的package管理器安装GoSublime插件后,一般能够自动提示Go内部函数,比如fmt.Printf 等,但是比较头疼的是,对自己编写的Go代码却没有自动提示功能,特别是跨包的时候。

比如自己在package model下编写一段代码,在package main下编写另一段代码,其中main里面书写代码时就没有model包的提示。原来是GoSublime插件没有配置完善,加上以下代码在GoSublime插件的配置文件就可以了,其中env的内容需要根据自己的环境进行配置。

GoSublime.sublime-settings:

{
    "env": {
        "GOPATH": "D:\\workspace\\workspace-git\\Go",
        "GOROOT": "C:\\Go",
        "PATH":"%GOROOT%;%GOPATH%;"
    },
    "comp_lint_enabled": true,   //打开这个才有下面的 comp_lint_commands标签里面的内容

    "comp_lint_commands": [
        {"cmd": ["go", "install"]}
    ],

    "on_save": [
        {"cmd":"gs_comp_lint"}   //当按保存时以cmd自动执行的命令
    ]
}

Sublime中配置Golang开发环境

最近在接触Golang,感觉很棒,等手上这个小项目用Golang搞定后,会出一个Golang的系列博客。 在Sublime中配置Golang开发环境是比较容易的。主要是插件的选择,这里我们选择GoSublime,看中他的函数解析能力,能在大多数情况下将变量所包含的方法解析出来,实际测试下来,如果是用接口实现的话有时候也没办法。不过总体来说这个插件还是不错的。 安装方法:这里就不展开讲了,`ctrl + shift + P`打开命令窗口,输入`install package`,加载好列表后,输入`GoSublime`,回车确认。 另外比较重要的是Golang文件在Sublime中的`build system`文件,我是这么写的: ``` { "working_dir": "${file_path}", "cmd": ["cmd", "/C", "go build -o ${file_base_name}.exe"], "shell": true, "variants": [ { "name": "Run", "working_dir": "${file_path}", "cmd": ["cmd","/C","start","cmd", "/C", "${file_base_name}.exe &pause"] }, { "name" : "Test", "working_dir": "${file_path}", "cmd": ["cmd","/C","start","cmd", "/C", "go test &pause"] } ] } ``` 编译时直接`ctrl + shift +B`选第一个,运行时`ctrl + shift +B`选第二个,非常简单,选第三个进行golang的单元测试。

系统配置备忘录,适用于全栈工程师

sublime

Install in LInux

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text

Package Control

import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

插件:

  • Emmet : 快速编写HTML
  • jQuery : jQuery代码提示
  • docBlockr : 快速注释
  • ConvertToUTF8 : 将其他任意编码格式转成UTF-8
  • SublimeCodeIntel: 多种语言代码提示
  • Alignmetn: 代码对齐
  • CoolFormat: 代码格式化,非常方便,使用方法:命令行:cq
  • IMESupport: 输入法跟随
  • 主题:https://github.com/kkga/spacegray
  • TODO:https://github.com/jonathandelgado/SublimeTodoReview

    build system:

    cpp2exe:
          {
              "encoding": "utf-8",
              "working_dir": "${file_path}",
              "cmd": ["g++", "-std=c++11", "-I", "C:\\MinGW\\include", "-Wl,--enable-stdcall-fixup", "-o", "${file_path}/${file_base_name}.exe", "${file}", "${file_path}\\ncapi32.dll"],
              "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
              "working_dir": "${file_path}",
              "selector": "source.c",
               "shell": true,
              "variants":
              [
                 {
                      "name": "Run",
                      "working_dir": "${file_path}",
                      "cmd": ["cmd","/C","start","cmd", "/C", "${file_base_name}.exe &pause"]
                 }
              ]
          }
    
    cpp2dll:
          {
              "path": "C:\\MinGW\\bin",
              "cmd": ["g++", "-std=c++11", "-m32", "-static", "-I", "C:\\MinGW\\include", "-shared", "-Wl,--kill-at,--enable-stdcall-fixup", "-o", "${file_path}/${file_base_name}.dll", "${file}", "${file_path}\\ncapi32.dll"],
              "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
              "working_dir": "${file_path}",
              "selector": "source.c",
               "shell": true,
          }
    

    Go:

    {
    "encoding": "utf-8",
    "working_dir": "${file_path}",
    "cmd": ["go", "build"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c",
     "shell": true,
    "variants":
    [
       {
            "name": "Run",
            "working_dir": "${file_path}",
            "cmd": ["cmd","/C","start","cmd", "/C", "${file_base_name}.exe &pause"]
       },{
             "name": "Test",
             "working_dir": "${file_path}",
             "cmd": ["go", "test"],
       }
    ]
    }
    
    快捷键:
          删除一行:
          { "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Line.sublime-macro"} },
    
License
----- BEGIN LICENSE -----
eldon
Single User License
EA7E-1122628
C0360740 20724B8A 30420C09 6D7E046F
3F5D5FBB 17EF95DA 2BA7BB27 CCB14947
27A316BE 8BCF4BC0 252FB8FF FD97DF71
B11A1DA9 F7119CA0 31984BB9 7D71700C
2C728BF8 B952E5F5 B941FF64 6D7979DA
B8EB32F8 8D415F8E F16FE657 A35381CC
290E2905 96E81236 63D2B06D E5F01A69
84174B79 7C467714 641A9013 94CA7162
------ END LICENSE ------

JAVA

JDK8u162 Linux版下载镜像

Python

Python3.6下载镜像

Chrome

Chrome64.0 Linux deb

Chrom SwitchyOmega 代理插件

http://files.hexcode.cn/SwitchyOmega_Chromium.crx

Eclipse:

尝试放弃MyEclipse,直接使用免费纯净的eclipse J2EE版,安装gralde插件一样好用,自带Git。

JetBrains全家桶

JetBrains全家桶可以使用edu信箱免费申请授权,联系自己的大学老师,或者学弟学妹共享一下吧。

(Qt + MSVC) & (Qt + MinGW) :

windows下推荐两个都装,Qt5.7下WebEngine组件需要用MSVC编译,其他场景推荐使用MinGW构建。
QtCreater的配置主题为:myqttheme,放置到D:\Qt\Qt5.7.0\Tools\QtCreator\share\qtcreator\styles路径即可。

Sqlite:

SQLiteExpertPers

MySQL:

客户端:MysqlFront + Navicate,前者简洁,清晰;后者稳定。

SSH客户端:

MobaXterm

C单片机:

Keilu5 + Stc ISP6.85

Win10资源管理器标签化:

以前用Clover,高分屏支持不好,而且广告越来越烦人。
改用QTTabBar了,非常好用,只不过作者已经多年没更新了。
下载镜像

Android Studio:

百度软件有镜像,直接下载。

WPS:

绿色精简无广告纯净版

截屏录屏:

picpick + LICEcap,前者截屏,后者录制GIF

快速启动:

Listary

CMD替代:

CMDER

邮件客户端:

网易邮箱大师 可以接受Gmail联系人,日历,非常便捷

热键管理,非常实用,自己写热键配置,AHK:

AutoHotKey

截图

snipaste
picpick

FTP

filezilla FTP server
flashfxp PJ

下载软件,替代迅雷

FDM

桌面图标整理

以前用Fences,桌面划分成一块一块的,后来觉得依然很乱,而且一点也不cool。
Fences新版支持把磁盘中某个文件夹的内容全部暴露在桌面上,看上去挺好的功能,其实会导致桌面更乱。
Fences收费。
现在完全投入Rolan的怀抱:Rolan
桌面就一张图片,所有图标都去掉了,集中在贴边的Rolan中管理。

VNC

UltraVNC

PDF

SumatraPDF

丁丁生于 1987.07.01 ,30岁,英文ID:newflydd

  • 现居住地 江苏 ● 泰州 ● 姜堰
  • 创建了 Jblog 开源博客系统
  • 坚持十余年的 独立博客 作者
  • 大学本科毕业后就职于 中国电信江苏泰州分公司,前两年从事Oracle数据库DBA工作,两年后公司精简技术人员,被安排到农村担任支局长(其本质是搞销售),于2016年因志向不合从国企辞职,在小城镇找了一份程序员的工作。
  • Git OSChina 上积极参与开源社区