[daily][emacs][go] 配置emacs go-mode的编辑环境以及环境变量问题
1. 安装go 安装go-mode
使用emacs编辑go代码的时候,你需要有正常可运行的go环境。
并且有emacs的go-mode package
https://www.emacswiki.org/emacs/GoLangMode
https://github.com/dominikh/go-mode.el
1.1 安装索引工具
还要分别安装如下两个索引工具
go get -v golang.org/x/tools/cmd/guru
go get -v github.com/rogpeppe/godef
2. 环境变量引入
除了1之外,正确运行的go环境还需要一个环境变量 GOPATH,一般我们会将GOPATH放在 ~/.bachrc或~/.bash_profile中。
这个时候,在emacs中有一点比较特殊的情况。
2.1
emacs在console中直接使用 emacs -nw来运行会自动继承环境变量,所以没有问题。
2.2
如果在x环境中启动emacs,它并不能引入环境变量。
这里有如下几个方法解决。
2.2.1 使用package exec-path-from-shell
它的用途就是把bash的环境变量引进来,见:https://github.com/purcell/exec-path-from-shell
但是我用的是fish,在~/.bashrc最下面有一行 exec fish。这会导致这个package报错,不做赘述。
2.2.2 使用自定义函数,如下:
(defun set-exec-path-from-shell-PATH ()
(let ((path-from-shell (shell-command-to-string "/bin/bash -c 'echo $PATH'")))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator)))) (defun set-exec-path-from-shell-GOPATH ()
(let ((path-from-shell (shell-command-to-string "/bin/bash -c 'echo $GOPATH'")))
(setenv "GOPATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator)))) ;(set-exec-path-from-shell-PATH)
;(set-exec-path-from-shell-GOPATH)
好用是好用的,但是我最终用来下面的方案
2.2.3 用~/.xprofile文件
x环境在启动时不会source ~/.bash_profile, 但是会source .xprofile. 所以,在他下面追加如下行
╰─>$ tail -n ~/.xprofile
# add by tong
source ~/.bash_profile
并保证,所以环境变量,都写在/bash_profile里,其他bash交互相关的才写在~/.bashrc里,因为bashrc里有这样一行,使非交互场景绕开:
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
这样的话,emacs就天然有了环境变量,并且vitual stdio code也有了。
3 附一个有关go的emacs的配置,其中改了写快捷键,是go与c环境快捷键统一。
另外,要想各种跳转都好用,你的go工程能够编译通过也是十分重要的。
代码的跳转等,由go-mode支持,不在需要cscope了。不过全文搜索怎么实现还没配置。(
(add-hook 'go-mode-hook
(lambda ()
(fci-mode)
(display-line-numbers-mode)
(line-number-mode)
(column-number-mode)
(whitespace-mode)
(local-set-key (kbd "C-c C-]") 'godef-jump)
(local-set-key (kbd "C-c C-r") 'go-guru-referrers)
(local-set-key (kbd "C-c C-t") 'pop-tag-mark)))
[daily][emacs][go] 配置emacs go-mode的编辑环境以及环境变量问题的更多相关文章
- windows8.1下常用编辑器安装配置(emacs/vim/sublime text3)
一.下载:在emacs:http://mirrors.ustc.edu.cn/gnu/emacs/windows/里下载emacs-24.3-bin-i386.zip.解压到自定目录,双击bin文件夹 ...
- ubuntu14.04 下emacs 24 配置
目的: 配置emacs 24 适合编程开发 主要参考JerryZhang的配置(Emacs 简易教程) http://www.perfect-is-shit.com/emacs-simple-tuto ...
- emacs 配置.emacs
emacs 配置.emacs (require 'package) (package-initialize) (add-to-list'package-archives '("melpa&q ...
- Emacs 安装配置使用教程
Emacs 安装配置使用教程 来源 https://www.jianshu.com/u/a27b97f900f7 序|Preface 先来一篇有趣的简介:Emacs和Vim:神的编辑器和编辑器之神 - ...
- CentOS6.x之emacs安装配置编译
刚开始学习linux,干学没什么意思,想在linux下写写程序,了解到linux下使用较多的是emacs和vim,在youtobe上分别看了看这两个工具进行开发的视频,个人感觉emacs比较酷一点,所 ...
- Emacs安装配置全攻略之中的一个编译安装简单配置
/*************************************************************************************************** ...
- 我也说说Emacs吧(1) - Emacs和Vi我们都学
好友幻神的<Emacs之魂>正在火热连载中,群里人起哄要给他捧捧场. 作为一个学习Emacs屡败屡战的用户,这个场还是值得捧一下的.至少我是买了HHKB键盘的... 从我的键盘说起 - 有 ...
- 我也说说Emacs吧(2) - Emacs其实就是函数的组合
Emacs本质上是函数的组合 从帮助上看emacs有何不同 Vim和Sublime Text等编辑器,本质上是一个编辑器. 比如我们看看vim的帮助,是这个风格的,比如我要看i命令的帮助: <i ...
- emacs使用本地emacs server模式打开远程文件
使用emacs的用户都知道,一般要打开远程机器上的文件要使用TrampMode模式,调用方式例如以下: C-x C-f /remotehost:filename RET (or /method:use ...
随机推荐
- MapReduce输出文件名更改
默认情况下生成的文件名是part-r-00000格式,想要自定义生成输出文件名可以使用org.apache.hadoop.mapreduce.lib.output.MultipleOutputs类用来 ...
- Django过滤器
在项目目录下建立templatetags文件 夹 建立 my_filter.py文件 from django import template register = template.Library() ...
- 简单SQL注入
既然是简单的,估计也就是''字符型把,输入'or'1 以下是输出结果,or没被过滤,单引号也没有 呢么用union联合注入试试,提交了'-1 union/**/select 1 and '1,发现回显 ...
- LuoGu P1168 中位数
题目描述 给出一个长度为 $ N $ 的非负整数序列 $ A_i $ ,对于所有 $ 1 ≤ k ≤ (N + 1) / 2 $ ,输出 $ A_1, A_3, -, A_{2k - 1} $ 的中位 ...
- ng2-translate 国际化中 配置文件添加变量
1. <li> {{ 'Withdrawmoney.tipsP1' | translate:{value:assets} }} </li> 2. "Withdrawm ...
- 十一Python之路,Day6 - 面向对象学习
本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战& ...
- JVM 组成以及各部分作用
1.Java虚拟机的体系结构 2.jvm在系统中的布局 3.jvm装载一个类 当一个classLoder启动的时候,classLoader的生存地点在jvm中的堆,然后它会去主机硬盘上将A.class ...
- (二)Knockout 文本与外观绑定
Visible Visible binding会依据绑定的数据来决定相应的DOM元素是否隐藏,hidden或visible. 我们首先在js文件部分定义一个view model,这里我创建的是一个ob ...
- Spring Boot 静态资源路径分析
最近在接触一个看公司的java后台项目(采用的耶鲁大学开源的一个cas单点登录系统),用的是框架是Spring Boot,用的模板是Thymeleaf,于是我生成一个Spring Boot的项目,并且 ...
- Mysql数据实时同步
企业运维的数据库最常见的是 mysql;但是 mysql 有个缺陷:当数据量达到千万条的时候,mysql 的相关操作会变的非常迟缓; 如果这个时候有需求需要实时展示数据;对于 mysql 来说是一种灾 ...