最好用的編輯器之一:Vim-Go環境搭建

来源:https://www.cnblogs.com/qcloud1001/archive/2018/12/05/10072325.html
-Advertisement-
Play Games

本文由Librant發表 如果說在Linux環境下,什麼編輯器最好用,如果我說是VIM,估計會有一大部分人嗤之以鼻,怎麼可能。VIM可能是他用過眾多編輯器最難用的一個。在我司用的是雲虛擬機,說實話吧,這裡吐槽一下,是真的卡,沒開幾個網頁,打開幾個軟體就卡的不要不要的,後來碼代碼的時候,能用Linux ...


本文由Librant發表

如果說在Linux環境下,什麼編輯器最好用,如果我說是VIM,估計會有一大部分人嗤之以鼻,怎麼可能。VIM可能是他用過眾多編輯器最難用的一個。在我司用的是雲虛擬機,說實話吧,這裡吐槽一下,是真的卡,沒開幾個網頁,打開幾個軟體就卡的不要不要的,後來碼代碼的時候,能用Linux機器我就儘量使用Linux環境,如果讀者正好也是一名Gopher的話,那我就強烈建議你使用VIM,Vim-go是當前使用最為廣泛的用於搭建Golang開發環境的vim插件。好了,廢話不多說,看我搭建好的界面吧。

img圖 Go-Vim界面

看到這個界面,讀者是不是不認識了,這就對了,是不是覺得很炫酷,其實Vim有很多的插件,可以把Vim打造的非常棒,等讀者查閱相關資料,清楚Vim的各種參數的時候,就可以根據自己的喜好,搭建不同風格的Go開發環境啦。So廢話不多說,開整。(建議先看完《跟我學Docker》的第一章部分)

1.1 環境準備

​ 能成功從gitHub拉取代碼,Go編譯器安裝完成之後,就可以在搭建Go-Vim啦。首先是在當前用戶的HOME目錄下創建 .vim 目錄和 .vimrc 文件:

librant@ubuntu:~$ mkdir .vim

librant@ubuntu:~$ touch .vimrc

創建完成之後,進入到 .vim 中,下載插件 Vim 的插件管理器bundle:

librant@ubuntu:~/.vim$ mkdir bundle

然後進入到 bundle 目錄中,安裝Vundle.vim:

librant@ubuntu:~/.vim/bundle$ git clone git clone https://github.com/VundleVim/Vundle.vim.git

下載完成之後,會在當前目錄下生成 Vundle.vim 目錄

同樣進入到 bundle 目錄中,安裝Vim-go:

librant@ubuntu:~/.vim/bundle$ git clone https://github.com/fatih/vim-go.git

下載完成之後,會在當前目錄下生成 vim-go 目錄

1.2 插件安裝

~/(用戶$HOME) 目錄下已經有 .vimrc文件就不需要再創建了。(" 為註釋部分)。

1.2.1 安裝Vundle.vim

在 .vimrc 文件中添加如下配置:

set nocompatible

filetype off

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

Plugin 'gmarik/Vundle.vim'

call vundle#end()

filetype plugin indent on

保存後,退出。

1.2.2 安裝Vim-go

繼續編輯 .vimrc文件,在call vundle#begin()和call vundle#end()之間再添加如下配置:

Plugin 'fatih/vim-go'

保存後,重新打開 vim 編輯器,在命令行的模式輸入:PluginInstall

:PluginInstall

執行之後會在左側出現需要安裝的插件列表,右側是.vimrc文件。如圖1-2-2所示:

img圖 1-2-2 Vim插件安裝界面

剛執行時,左下角會出現 Processing的過程,需要稍微等一會兒,這是在下載代碼,安裝完成之後,左下角將出現Done!的單詞,表示已經安裝完成。

1.2.3 安裝 go.tools Binaries

​ Vim-go安裝中需要使用到Go的相關的二進位工具。由於歷史的原因,在google上的工具是無法自行下載安裝的,在gitHub上的工具是可以安裝成功的。

首先打開 .vimrc 文件,切換到命令行模式,執行 GoInstallBinaries 命令自行安裝。

:GoInstallBinaries

等待 Vim-go依賴的工具自動安裝,如果安裝成功後,會在 $GOPATH/bin 目錄下生成。安裝完成後如圖1-2-3所示:

img圖 1-3-2 vim-go依賴的命令文件

由於有些命令文件是無法自動安裝完成,這就需要手動進行安裝啦。首先對比目錄,看缺少哪些命令沒有安裝完成,然後去gitHub上搜索,找到對應的命令源碼之後,使用git clone 下載到本地,然後使用 go install命令進行安裝即可。前面已經講解過如何安裝啦,這裡就不再贅述。

相關工具的gitHub路徑:

golint: https://github.com/golang/lint.git

gocode: https://github.com/nsf/gocode.git

errcheck: https://github.com/kisielk/errcheck.git

gotags: https://github.com/jstemmer/gotags.git

(缺少什麼工具,基本都可以找到的,這裡就不一一列舉了)

1.3 VIM主題顏色

​ Vim的主題顏色保存在 /usr/share/vim/vim80/colors 目錄下保存,如果目錄下沒有的主題,就需要自己進行下載了。下載到此目錄的顏色主題,將可以被所有用戶使用,如果只需要在當前用戶下使用,可以將下載的主題放在 ~/.vim/colors 目錄下即可。個人比較喜歡molokai主題風格,下麵就簡單介紹如何下載這個主題吧。

​ 1)在gitHub上搜索 molokai 主題,找到主題的git倉庫 tomasr/molokai

​ 2)進入到 .vim目錄下,使用git clone 下載主題

librant@ubuntu:~/.vim$ git clone https://github.com/tomasr/molokai.git

​ 3)下載完成之後,拷貝 molokai/colors/molokai.vim 文件到 ~/.vim/colors 目錄下

​ 4)配置 .vimrc 文件,在文件中紅添加如下信息:

set t_Co=256

colorscheme molokai

let g:molokai_original = 1

let g:rehash256 = 1

需要配置其他的主題,只需要設置相應的主題名稱。

1.4 其他插件安裝

1.4.1 SirVer/ultisnips

​ UltiSnips是Vim的代碼片段工具,它只是一個引擎,它需要和vim-snippets搭配使用。vim-snippets預定義了幾十種語言常用的代碼模板,位於 ~/.vim/bundle/vim-snippets/UltiSnips/,UltiSnips 有一套自己的代碼模板語法規則。

在 .vimrc中的配置如下:

Plugin 'honza/vim-snippets'

Plugin 'SirVer/ultisnips'

"插入模式下直接通過

let g:UltiSnipsExpandTrigger="

"彈出UltiSnips的可用列表,由於不常用, 所以這裡設置成了特殊的

let g:UltiSnipsListSnippets="

"

let g:UltiSnipsJumpForwardTrigger="

"

let g:UltiSnipsJumpBackwardTrigger="

增加位置如Go-vim的位置一致,安裝過程也是類似的。

gitHub的代碼路徑如下所示:

honza/vim-snippets: https://github.com/honza/vim-snippets.git

SirVer/ultisnips: https://github.com/SirVer/ultisnips.git

1.4.2 scrooloose/nerdtree

​ NERDTree的作用就是列出當前路徑的目錄樹,一般IDE都是有的。可以方便的瀏覽項目的總體的目錄結構和創建刪除重命名文件或文件名。

​ 在 .vimrc中的配置如下:

Plugin 'scrooloose/nerdtree'

" 設置NerdTree

map

map

進入到 vim 後可以按 F7 顯示和隱藏 NERDTree區域。

gitHub的代碼路徑如下所示:

scrooloose/nerdtree: https://github.com/scrooloose/nerdtree.git

1.4.3 majutsushi/tagbar

​ tagbar可以將正在編輯的文件生成一個大綱視圖,包含介面/方法/變數等, 可以選中快速跳轉到目標位置, 編輯大文件特別有用。

由於tagbar是基於ctags,需要先安裝ctags:

root@ubuntu:/# apt-get install ctags

​ 在 .vimrc中的配置如下:

"F9觸發,設置寬度為30

let g:tagbar_width = 30

nmap

"開啟自動預覽(隨著游標在標簽上的移動,頂部會出現一個實時的預覽視窗)

let g:tagbar_autopreview = 1

"關閉排序,即按標簽本身在文件中的位置排序

let g:tagbar_sort = 0

進入到 vim 後可以按 F9 開啟和關閉tagbar功能 。

gitHub的代碼路徑如下所示:

majutsushi/tagbar: https://github.com/majutsushi/tagbar.git

1.4.4 Raimondi/delimitMate

​ delimitMate是自動補全引號(單引號/雙引號/反引號), 括弧(()[]{})的插件。

​ 在 .vimrc中的配置如下:

Plugin 'Raimondi/delimitMate'

gitHub的代碼路徑如下所示:

Raimondi/delimitMate: https://github.com/Raimondi/delimitMate.git

GO語言調試利器——dlv

vim創建程式文件自動添加頭部註釋

附錄:VIM參數設置解析

  1. set nocompatible:不要使用vi的鍵盤模式,而是vim自己的
  2. set number:顯示行號
  3. set showcmd:輸入的命令顯示出來
  4. syntax on:開啟語法高亮
  5. filetype on:檢測文件類型

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、變數的基本概念 變數是指用來存儲特定類型的數據,可以根據需要隨時改變變數中所存儲的數據值。變數具有名稱、類型和值,因此使用變數之前必須先聲明變數,即指定變數的類型和名稱。 2、變數類型 變數類型根據其定義可以分為兩種:一種是值類型,另一種是引用類型。這兩種變數類型的區別在於數據的存儲方式,值類型 ...
  • 我們知道 應用程式的核心配置在項目中的 " " 文件. 方法主要用於將服務添加到 容器中並做一些配置. 配置請求管道. 框架使用自己的DI容器\(主要為了相容之前的NET Framework版本和使用一些高級特性,如攔截器\),所以我們在 方法的底部會看到 這時候 的方法返回值也變成了 \(關於這點 ...
  • 問題:在新買的阿裡雲伺服器ECS上安裝nginx後打開預設頁面失敗,如下圖所示。 系統環境:Ubuntu 16.04.4 LTS64版本。 步驟回顧: 解決: 阿裡雲控制台沒有相關的安全組記錄,需添加配置。步驟如下: 1.登錄阿裡雲管理控制台,在實例後面的更多里選擇網路和安全組裡的安全組配置 2.新 ...
  • 使用windows編輯,會有回車問題和編碼問題。換行問題: Win 換行 \r\n Linux 換行 \n Mac 換行 \r 。很多工具在這方面不相容,比如Shell。編碼問題: Linux 預設使用utf-8 (without BOM),Win 預設GBK。 linux下直接打開win文檔會中文 ...
  • 龍尚 U9300C 7模 4G LTE (國內全網通) 接入linux系統會有4個串口 其中ttyUSB2 為AT指令口 ttyUSB1 為撥號上網口 wvdial 撥號入網參數 ...
  • Win10 linux 子系統 Exec format error , Not an ELF file - it has the wrong magic bytes at the start ...
  • umask 指定創建文件時所需要的許可權掩碼,掩碼的執行許可權對於文件沒有效果。如果模式以數字開頭,則解釋為八進位數字;否則解釋為符號模式掩碼,類似於chmod(1)所接受的模式掩碼。如果省略模式,則列印掩碼的當前值。 此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、op ...
  • win+R 彈出視窗輸入gpedit.msc 電腦配置=》管理模板=》系統=》憑據分配=》加密Oracle修正 編輯策略設置=》已啟用=》保護級別=》易受攻擊 配置完成 就可以正常遠程連接伺服器了. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...