欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

emacs如何集成golang的開(kāi)發(fā)環(huán)境?-創(chuàng)新互聯(lián)

前言

  • 在本篇文章中,我們將介紹神之編輯器:emacs 如何集成go的開(kāi)發(fā)環(huán)境

    下花園ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!
  • 你想擁有如下圖所示的工作環(huán)境嗎?這就是emacs的強(qiáng)大功能,快來(lái)一起學(xué)習(xí)吧~

emacs如何集成golang的開(kāi)發(fā)環(huán)境?emacs如何集成golang的開(kāi)發(fā)環(huán)境?

emacs是什么

  • Emacs(/?i?m?ks/,源自Editor MACroS,宏編輯器),是一個(gè)文本編輯器家族,具有強(qiáng)大的可擴(kuò)展性,在程序員和其他以技術(shù)工作為主的計(jì)算機(jī)用戶中廣受歡迎。

  • Emacs在1970年代誕生于MIT人工智能實(shí)驗(yàn)室(MIT AI Lab)

  • Emacs是當(dāng)前世界上最具可移植性的重要軟件之一,能夠在當(dāng)前絕大多數(shù)操作系統(tǒng)上運(yùn)行,包括各種類(lèi)Unix系統(tǒng)(GNU/Linux、FreeBSD、NetBSD、OpenBSD、Solaris、AIX、OS X等)

  • Emacs不僅僅是一個(gè)編輯器,它是一個(gè)集成環(huán)境,或可稱它為集成開(kāi)發(fā)環(huán)境,這些功能如讓用戶置身于全功能的操作系統(tǒng)中。Emacs可以:

    • 收發(fā)電子郵件、上新聞組(Gnus)

    • 無(wú)縫直接編輯遠(yuǎn)程文件(Tramp)

    • 通過(guò)Telnet登錄遠(yuǎn)程主機(jī)

    • 操作殼層(M-x EShell,Term)

    • 結(jié)合git, mercurial等版本控制系統(tǒng)并直接操作(Magit,VC)

    • 上Twitter(Twittering-mode)

    • 登陸IRC和朋友交流(M-x ERC,rcirc)

    • 電子數(shù)據(jù)表

    • 模擬其他編輯器,如vi(Evil-mode)、WordStar、EDT、TPU等

    • 編輯Wiki (Wikipedia-mode)

    • 對(duì)多種編程語(yǔ)言的編輯,如C/C++、Perl、Python、Lisp等等

    • 調(diào)試程序,結(jié)合GDB,EDebug等。

    • 玩游戲

    • 計(jì)算器

    • 心理咨詢(M-x doctor)

    • 煮咖啡

    • 記筆記、日記(Org-mode)

    • 管理日程,Task,待辦事項(xiàng)(ToDo),約會(huì)等GTD(Org-mode)

    • 寫(xiě)作與出版(Org-mode,Muse-mode)

    • 目錄管理(Dired)

    • 文件比較、合并(Ediff)

    • 閱讀info和man文檔(M-x info,woman)

    • 瀏覽網(wǎng)站(M-x eww)

    • 為各種程序(TeX、LaTeX等)提供統(tǒng)一的操作界面

    • ……

  • 所以有人說(shuō),你可以在emacs里面。自誕生以來(lái),Emacs演化出了眾多分支,其中使用最廣泛的兩種分別是:1984年由理查·斯托曼發(fā)起并由他維護(hù)至2008年的GNU Emacs,以及1991年發(fā)起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持著相當(dāng)?shù)募嫒菪?。它們都使用了Emacs Lisp這種有著極強(qiáng)擴(kuò)展性的編程語(yǔ)言,從而實(shí)現(xiàn)了包括編程、編譯乃至網(wǎng)絡(luò)瀏覽等等功能的擴(kuò)展。本文主要基于GNU Emacs進(jìn)行講解

emacs 與 vim 的對(duì)比

  • 我相信熟悉linux基本操作的同學(xué)對(duì)于vim這一款編輯器不會(huì)陌生,針對(duì)vim與emacs誰(shuí)更好常常會(huì)引發(fā)一場(chǎng)論戰(zhàn)

  • 其實(shí)vim與emacs兩種編輯器的設(shè)計(jì)哲學(xué)完全不同,風(fēng)格迥異。vim的特點(diǎn)是組合性(Composability),Emacs的特點(diǎn)是可擴(kuò)展性(Extensibility)。vim使用鍵序列輸入,Emacs則經(jīng)常使用組合鍵(同時(shí)按)輸入,跟彈鋼琴一樣。所以Emacs有個(gè)綽號(hào)Esc + Meta + Alt + Ctrl + Shift

emacs安裝

  • 下面我們將分別介紹在windows、mac、linux平臺(tái)安裝emacs的方式

  • 當(dāng)以下方法遇到問(wèn)題時(shí),記得查看GUN emacs官網(wǎng)的最新介紹

windows用戶
  • 首先登陸GNU鏡像下載頁(yè)面blog,下載最新版本為emacs-26.3-x86_64.zip

  • 解壓并重命名 emacs-26.3-x86_64.zip 到所需安裝位置。如"D:\emacs-26.3",后面均以此為例。

  • 解壓之后,創(chuàng)建一個(gè)指向文件bin/runemacs.exe的桌面快捷方式,然后雙擊該快捷方式的圖標(biāo)來(lái)啟動(dòng)Emacs

  • 配置HOME目錄:在注冊(cè)表中添加計(jì)算機(jī)\HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs項(xiàng),為Emacs項(xiàng)添加字符串值.HOME -> D:\emacs-26.3`

添加系統(tǒng)環(huán)境變量D:\emacs-26.3

linux用戶
>> wget  http://mirror-hk.koddos.net/gnu/emacs/emacs-26.3.tar.gz
  • 使用tar 命令解壓剛剛下載的Go語(yǔ)言開(kāi)發(fā)包到/usr/local目錄

>> tar -C /usr/local -xzf emacs-26.3.tar.gz
  • 編譯

>> cd /usr/local/emacs-26.3
>> ./configure
>> make && make install
  • 運(yùn)行
    直接在終端輸入emacs

Ubuntu平臺(tái)(16.04以上版本)
  • 安裝

>> sudo add-apt-repository ppa:kelleyk/emacs
>> sudo apt install emacs26
  • 刪除

>> sudo apt remove --autoremove emacs26 emacs26-nox
  • 運(yùn)行
    直接在終端輸入emacs

mac用戶
  • 可以使用HomeBrew進(jìn)行安裝

brew cask install emacs
  • 或者通過(guò)如下網(wǎng)站直接下載:

https://emacsformacosx.com/
  • 運(yùn)行
    直接在終端輸入emacs

emacs快捷鍵

  • emacs有一些基本的操作指令,是每一個(gè)emacser必備的

  • 在我們查看emacs的快捷鍵時(shí),要注意,大寫(xiě)字母C 與 M 代表的含義。在windows與linux中,C 表示 Ctrl , M表示 Alt. 但是在mac下,C 代表的是Ctrl,M表示的是meta鍵。此鍵是可以在系統(tǒng)偏好設(shè)置`中配置的。

  • 開(kāi)啟

emacs
emacs -Q  開(kāi)啟不顯示信息
  • 關(guān)閉

C-x C-c
  • 光標(biāo)操作

C-b 向后移動(dòng)一個(gè)字符
C-f 向前移動(dòng)一個(gè)字符
M-b 向后移動(dòng)一個(gè)單詞
M-f 向前移動(dòng)一個(gè)單詞
C-p 向前移動(dòng)一行
C-n 向后移動(dòng)一行
C-a 當(dāng)前行的開(kāi)始位置
C-e 當(dāng)前行的結(jié)束
M-a 向前移動(dòng)一句話
M-e 向后移動(dòng)一句話
M-< 移動(dòng)到開(kāi)始的位置
M-> 移動(dòng)到結(jié)束的位置
注:< > 需要和 shift 按鍵 一塊按
C-v  向后翻頁(yè)
M-v 向前翻頁(yè)
第一次 C-l(字符L不是數(shù)字1) 把光標(biāo)所處的位置移動(dòng)到中間 (center)
第二次 C-l(字符L不是數(shù)字1) 把光標(biāo)所處的位置移動(dòng)到上邊(top)
第三次 C-l(字符L不是數(shù)字1) 把光標(biāo)所處的位置移動(dòng)到下邊(bottom)
  • 多窗口顯示

C-x  + 數(shù)組(0–9)
C-x 1 取消所有的窗口,只保留一個(gè)原始窗口
C-x 2 垂直切割當(dāng)前窗口,分成上下倆個(gè)窗口
C-x 3 水平切割當(dāng)前窗口,分成左右倆個(gè)窗口
C-M v 下一個(gè)窗口翻頁(yè)
C-x o 光標(biāo)移動(dòng)到下一個(gè)窗口
注:操作可疊加
  • 刪除和剪切

C-d  刪除一個(gè)字符
M-d  剪切一個(gè)單詞
C-k  剪切光標(biāo)和該行末尾
M-k  剪切光標(biāo)和標(biāo)點(diǎn)符號(hào)
C- spaces(空格鍵)  先標(biāo)記的地方為start  第二次標(biāo)記的地方為end
C-w  剪切start 和 end 中間的內(nèi)容
  • 粘貼和復(fù)制

C-y  粘貼最近的內(nèi)容
M-y  在C-y之后使用,往上追溯替換粘貼的內(nèi)容
  • 查找

C-s 向后查找
C-r 向前查找
  • 打開(kāi)、新建、保存、關(guān)閉文件

C-x C-f 打開(kāi)文件,文件不存在則新建
C-x C-s 保存當(dāng)前文件
C-x C-b 列出buffer文件列表
C-x b 切換buffer文件 (通過(guò)在面板最下面輸入文件名字)
C-x C-c 關(guān)閉并且保存文件
  • 撤銷(xiāo) & 反撤銷(xiāo)

C-x u 撤銷(xiāo)
C-- 撤銷(xiāo)
C-/ 撤銷(xiāo)
在撤銷(xiāo)的時(shí)候如果撤銷(xiāo)多了需要進(jìn)行反撤銷(xiāo)
具體是用C-f等打斷當(dāng)前撤銷(xiāo)操作,接著進(jìn)行的撤銷(xiāo)動(dòng)作就是反撤銷(xiāo)。
C-x z 重復(fù)之前的操作 重復(fù)多次可以只按zzzz

emacs 配置文件

  • emacs 配置文件默認(rèn)位于Home目錄下(~/),可以通過(guò)變量user-emacs-directory修改

  • 配置文件夾可以是Home目錄下的.emacs.d文件,通常會(huì)將所有配置放入其中

  • 當(dāng)啟動(dòng)Emacs時(shí),通常會(huì)嘗試從初始化文件加載Lisp程序。該文件(如果存在)指定如何為您初始化Emacs。初始文件為 ~/.emacs, ~/.emacs.el, or  ~/.emacs.d/init.el  中的一個(gè)。

  • 對(duì)于初學(xué)者,可以去查找網(wǎng)上一些有名的配置直接使用,大牛一般都是一個(gè)大的.emacs.d文件。如果想獲取筆者對(duì)于emacs的配置,可以在后臺(tái)留言。

emacs 基本配置

  • 添加官方與國(guó)內(nèi)package的源

(setq package-archives '(("gnu"   . "http://elpa.emacs-china.org/gnu/")
                         ("melpa-stable" . "http://elpa.emacs-china.org/melpa-stable/")
                          ("melpa-stable2" . "https://stable.melpa.org/packages/")
                          ("melpa" . "http://elpa.emacs-china.org/melpa/")
                         ("marmalada" . "http://elpa.emacs-china.org/marmalade/")))
  • 對(duì)于大量emacs 軟件包的配置、管理、更新。我推薦使用use-package來(lái)管理包的配置與加載。

;;
;; use use-package
;;
(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))
  • 使用ivy-mode拓展套件完成快速搜索、快速查找、智能補(bǔ)全功能

;;
;; ivy mode
;;
(use-package ivy
  :ensure t
  :diminish (ivy-mode . "")
  :config
  (ivy-mode 1)
  (setq ivy-use-virutal-buffers t)
  (setq enable-recursive-minibuffers t)
  (setq ivy-height 10)
  (setq ivy-initial-inputs-alist nil)
  (setq ivy-count-format "%d/%d")
  (setq ivy-re-builders-alist
        `((t . ivy--regex-ignore-order)))
  )

;;
;; counsel
;;
(use-package counsel
  :ensure t
  :bind (("M-x" . counsel-M-x)
         ("\C-x \C-f" . counsel-find-file)))

;;
;; swiper
;;
(use-package swiper
  :ensure t
  :bind (("\C-s" . swiper))
  )

emacs配置go開(kāi)發(fā)環(huán)境

gomode + goimport自動(dòng)導(dǎo)入 + godef跳轉(zhuǎn)
  • 首先安裝包godef 與 goimports

go get -u github.com/rogpeppe/godef
go get -u golang.org/x/tools/cmd/goimports
  • 配置

  • M-n 查找函數(shù)應(yīng)用,等價(jià)于(M-x lsp-find-ref

  • M-. 查找函數(shù)實(shí)現(xiàn)

(use-package go-mode
  ;; :load-path "~/.emacs.d/vendor/go-mode"
  :mode ("\\.go\\'" . go-mode)
  :ensure-system-package
  ((goimports . "go get -u golang.org/x/tools/cmd/goimports")
   (godef . "go get -u github.com/rogpeppe/godef"))
  :init
  (setq gofmt-command "goimports"
        indent-tabs-mode t)
  :config
  (add-hook 'before-save-hook 'gofmt-before-save)
  :bind (:map go-mode-map
              ("\C-c \C-c" . compile)
              ("\C-c \C-g" . go-goto-imports)
              ("\C-c \C-k" . godoc)
              ("M-j" . godef-jump)))
gocode+company 實(shí)現(xiàn)代碼自動(dòng)補(bǔ)全
  • 安裝gocode

go get -u github.com/stamblerre/gocode

gocode 是守護(hù)進(jìn)程,查看是否在后臺(tái)運(yùn)行

ps -e | grep gocode
  • 配置

;;
;; company
;;
(use-package company
  :ensure t
  :config
  (global-company-mode t)
  (setq company-idle-delay 0)
  (setq company-minimum-prefix-length 3)
  (setq company-backends
        '((company-files
           company-yasnippet
           company-keywords
           company-capf
           )
          (company-abbrev company-dabbrev))))

(add-hook 'emacs-lisp-mode-hook (lambda ()
                                  (add-to-list  (make-local-variable 'company-backends)
                                                '(company-elisp))))
flycheck 語(yǔ)法檢查
  • 配置

  • C-c ! l  , C-c ! v 查看是否有語(yǔ)法錯(cuò)誤

(use-package flycheck
  :ensure t
  :config
  (global-flycheck-mode t)
  )
gotest 進(jìn)行各種測(cè)試
(use-package gotest
  :after go-mode
  :bind (:map go-mode-map
              ("C-c C-f" . go-test-current-file)
              ("C-c C-t" . go-test-current-test)
              ("C-c C-p" . go-test-current-project)
              ("C-c C-b" . go-test-current-benchmark)
              ("C-x x" . go-run))
  :config
  (setq go-test-verbose t))
errorcheck 進(jìn)行程序錯(cuò)誤檢查
  • 安裝

go get -u github.com/kisielk/errcheck
  • 配置

(use-package go-errcheck
  :after go-mode
  :ensure-system-package (errcheck . "go get -u github.com/kisielk/errcheck")
  :bind (:map go-mode-map
              ("C-c C-e" . go-errcheck)))
gtags 查找項(xiàng)目中的變量、函數(shù)等
  • 安裝源代碼GUN global, 注意mac用戶不要用brew安裝,因?yàn)楸仨氁渲胹qlite3

wget http://tamacom.com/global/global-6.5.7.tar.gz
tar xvf global-6.5.7.tar.gz
cd global-6.5.7
./configure --with-sqlite3
make
sudo make install
  • 安裝gtags生成器

go get github.com/juntaki/gogtags
  • 在項(xiàng)目目錄中輸入如下,會(huì)生成GTAGS等文件

gogtags -v
  • 配置helm-gtags

  • 開(kāi)啟helm-gtags-mode

M-x helm-gtags-mode
  • 這時(shí)候在項(xiàng)目中即可使用M-x helm-gtags find partern 等查找tags

(use-package helm-gtags
  :config
  (setq helm-gtags-ignore-case t
        helm-gtags-auto-update t
        helm-gtags-use-input-at-cursor t
        helm-gtags-pulse-at-cursor t
        helm-gtags-prefix-key "\C-cg"
        helm-gtags-suggested-key-mapping t)
  :bind (:map helm-gtags-mode-map
              ("C-c g a" . helm-gtags-tags-in-this-function)
              ("C-j" . helm-gtags-select)
              ("M-." . helm-gtags-dwim)
              ("M-," . helm-gtags-pop-stack)
              ("C-c <" . helm-gtags-previous-history)
              ("C-c >" . helm-gtags-next-history))
  :hook ((dired-mode eshell-mode c-mode c++-mode asm-mode) . helm-gtags-mode))
projectile 在go項(xiàng)目中切換
  • 配置

(use-package dumb-jump
  :bind (("M-g o" . dumb-jump-go-other-window)
         ("M-g j" . dumb-jump-go)
         ("M-g x" . dumb-jump-go-prefer-external)
         ("M-g z" . dumb-jump-go-prefer-external-other-window))
  :config
  ;; (setq dumb-jump-selector 'ivy) ;; (setq dumb-jump-selector 'helm)
:initny
(dumb-jump-mode)
  :ensure
)

總結(jié)

  • 在本文中,我們介紹了神之編輯器emacs的安裝、配置特別是對(duì)于go語(yǔ)言集成環(huán)境的配置。

  • 本文使用了use-package來(lái)管理emacs的軟件包,并詳細(xì)介紹了go語(yǔ)言集成環(huán)境的配置細(xì)節(jié)和使用方法。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站名稱:emacs如何集成golang的開(kāi)發(fā)環(huán)境?-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://aaarwkj.com/article8/cchhop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、服務(wù)器托管品牌網(wǎng)站設(shè)計(jì)、域名注冊(cè)、移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
五月婷婷色丁香综合激情| 黄色三级视频久久久| 国产女同av一区二区三区| 不卡的av中文字幕在线播放| 人妻在线中文字幕一区| 国产三级av高清一区二区| 亚洲男人堂色偷偷一区| 高潮少妇水多毛多av| 国产亚洲欧美日韩中文字幕| 国产精品国产高清国产一区| 国产国产乱老熟视频网站| 在线免费观看午夜视频| 亚洲字幕中文在线乱码mv| 高清大片免费看一区二区| 国产伦人偷精品免费视频| 日韩成人中文字幕电影| 国产中文字幕自拍视频| 欧美日韩av在线一区二区| 91日韩人妻一区二区三区| 绯色av一区二区三区蜜臀| 91精品麻豆国产自产在线| 中文字幕乱码视频日本| 一本色桃子精品久久中文字幕| 99精品一二三日韩| 午夜神马福利激情视频| 亚洲国产av福利久久| 自拍偷拍亚洲丝袜大秀| 四虎永久精品在线视频| 五月开心婷婷开心五月活动推荐| 亚洲欧美激情专区在线| 欧美一区二区成人精品视频| 射精视频在线观看免费| 免费在线免费观看av| av一区二区三区不卡在线看| 小明久久国内精品自线| av电影网站中文字幕| 欧美日韩一级一区二区三区| av毛片在线播放免费| 91一区二区三区在线| 成人精品亚洲一区二区| 亚洲午夜福利啪啪啪|