


Detaillierte Erläuterung der VIM-Konfiguration der Go-Sprachumgebung
1. Umgebungsvorbereitung:
Beschreibung der Systemumgebung:
[root@docker golang]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@docker golang]# uname -a Linux docker 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [root@docker golang]#
Bereiten Sie eine Go-Datei zum Beobachten des Konfigurations-Plugins vor. in Änderungen im Prozess:
//hellogolang.go package main import "fmt" func main() { fmt.Println("Hello Golang!") }
2. Plug-in-Konfiguration:
1. Vundle.vim:
#mkdir ~/.vim/bundle #git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Vimrc konfigurieren: create~ /.vimrc-Datei (wenn Sie diese Datei nicht haben), fügen Sie die Vundle.vim-Konfiguration oben in der Datei hinzu:
set nocompatible " be iMproved, required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " let Vundle manage Vundle, required Plugin 'gmarik/Vundle.vim' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required
Derzeit ist in Vim nur das Vundle.vim-Plug-in installiert . Das Bearbeiten von hellogolang.go unterscheidet sich nicht vom Bearbeiten einer gewöhnlichen Textdatei.
2 vim-go
Vim-go ist derzeit das am häufigsten verwendete Tool zum Erstellen von Golang . Das vim-Plug-in für die Entwicklungsumgebung verwende ich auch vim-go als Kern und Grundlage zum Aufbau der Umgebung. vim-go wird mit dem Open-Source-Plug-in-Manager gmarik/Vundle installiert. Vim ist derzeit der am meisten empfohlene Vim-Plug-in-Manager und übertrifft Pathogen.
Hier verwenden wir vundle als Plug-in-Verwaltungstool von Vim.
Bearbeiten Sie ~/.vimrc, fügen Sie eine Zeile zwischen vundle#begin und vundle#end hinzu:
Plugin 'fatih/vim-go'
In Vim ausführen: PluginInstall,
Vundle.vim A Das Unterfenster „Vundle Installer Preview“ wird auf der linken Seite geöffnet und am unteren Rand des Fensters wird eine Eingabeaufforderung angezeigt: „Verarbeitung von ‚fatih/vim-go‘“. Nachdem die Installation abgeschlossen ist, ändert sich die Eingabeaufforderung in „Fertig!“. ".
Zu diesem Zeitpunkt können wir sehen, dass es unter .vim/bundle einen zusätzlichen vim-go-Ordner gibt:
$ ls .vim/bundle/ vim-go/ Vundle.vim/
Bearbeiten Sie zu diesem Zeitpunkt hellogolang.go erneut , die Syntaxhervorhebung ist jetzt verfügbar, ebenso wie die automatische Formatierung beim Speichern (mit $GOBIN/gofmt), aber andere erweiterte Funktionen, wie der automatische Import fehlender Pakete und die automatische Vervollständigung, sind immer noch nicht verfügbar. Wir müssen mit der Installation fortfahren ein paar Sachen.
3. Go.tools-Binärdateien installieren
In den vim-go-Installationsanweisungen wird erwähnt, dass zuerst alle erforderlichen Binärdateien installiert werden müssen , wie Gocode, Godef, Goimports usw.
Über:GoInstallBinaries werden diese von Vim-Go abhängigen Binärtools automatisch heruntergeladen und unter $GOBIN oder $GOPATH/bin installiert. (Dieses Tool erfordert git oder hg und muss im Voraus in Ihrem Betriebssystem installiert werden.)
: Die Ausführung von GoInstallBinaries ist interaktiv, Sie müssen zur Bestätigung die Eingabetaste drücken:
vim-go: gocode not found. Installing github.com/nsf/gocode to folder /home/tonybai/go/bin vim-go: goimports not found. Installing code.google.com/p/go.tools/cmd/goimports to folder /home/tonybai/go/bin/ vim-go: godef not found. Installing code.google.com/p/rog-go/exp/cmd/godef to folder /home/tonybai/go/bin/ vim-go: oracle not found. Installing code.google.com/p/go.tools/cmd/oracle to folder /home/tonybai/go/bin/ vim-go: gorename not found. Installing code.google.com/p/go.tools/cmd/gorename to folder /home/tonybai/go/bin/ vim-go: golint not found. Installing github.com/golang/lint/golint to folder /home/tonybai/go/bin/ vim-go: errcheck not found. Installing github.com/kisielk/errcheck to folder /home/tonybai/go/bin/
Aber diese Die meisten Codes werden auf code.google.com gehostet, daher ist es aus bekannten Gründen wahrscheinlich, dass die automatische Installation von vim-go fehlschlägt. Dazu müssen Sie jedes Tool entsprechend der Quellcodeadresse herunterladen und lokal installieren im Log oben erwähnt. Wenn Sie keine Leiter erstellen können, können Sie das entsprechende Paket über http://gopm.io herunterladen.
Nach der Installation lauten die neuen Binärdateien unter $GOBIN wie folgt:
-rwxr-xr-x 1 tonybai tonybai 5735552 11?? 7 11:03 errcheck* -rwxr-xr-x 1 tonybai tonybai 9951008 11?? 7 10:33 gocode* -rwxr-xr-x 1 tonybai tonybai 5742800 11?? 7 11:07 godef* -rwxr-xr-x 1 tonybai tonybai 4994120 11?? 7 11:00 goimports* -rwxr-xr-x 1 tonybai tonybai 5750152 11?? 7 11:03 golint* -rwxr-xr-x 1 tonybai tonybai 6381832 11?? 7 11:01 gorename* -rwxr-xr-x 1 tonybai tonybai 2954392 11?? 7 10:38 gotags* -rwxr-xr-x 1 tonybai tonybai 9222856 11?? 7 11:01 oracle*
Nach der Installation dieser Binärdateien schauen wir uns an, welche Funktionen unterstützt werden.
Bearbeiten Sie hellogolang.go erneut:
- Beginnen Sie eine neue Zeile und geben Sie fmt. ein, dann Strg+x, Strg+o, Vim öffnet das Dropdown-Feld mit der Vervollständigungsaufforderung, aber Es ist nicht die Art der Vervollständigung, die in Echtzeit folgt. Diese Vervollständigung wird von Gocode bereitgestellt.
– Geben Sie eine Codezeile ein: time.Sleep(time.Second), führen Sie Folgendes aus: GoImports, Vim importiert das Zeitpaket automatisch.
– Bewegen Sie den Cursor auf die Sleep-Funktion, führen Sie Folgendes aus: GoDef oder geben Sie gd im Befehlsmodus ein. Vim öffnet die Definition der Sleep-Funktion in $GOROOT/src/time/sleep.go. Ausführung: b 1 kehrt zu hellogolang.go zurück.
– Ausführen: GoLint, führen Sie golint für die aktuelle Go-Quelldatei aus.
– Ausführen: GoDoc, um das Go-Dokument zu öffnen, das dem Symbol unter dem aktuellen Cursor entspricht.
– Ausführen: GoVet, führen Sie go vet im aktuellen Verzeichnis der aktuellen Go-Quelldatei aus.
– Ausführen: GoRun, kompilieren und das aktuelle Hauptpaket ausführen.
– Ausführen: GoBuild, kompilieren Sie das aktuelle Paket, das von Ihren Quelldateien abhängt. GoBuild erstellt die Ergebnisdatei nicht.
– Ausführen: GoInstall, um das aktuelle Paket zu installieren.
– Führen Sie GoTest aus, um die Datei _test.go unter Ihrem aktuellen Pfad zu testen.
– Führen Sie Folgendes aus: GoCoverage, erstellen Sie eine Testabdeckungsergebnisdatei und öffnen Sie den Browser, um die aktuelle Paketsituation anzuzeigen.
– Führen Sie GoErrCheck aus, um mögliche nicht erfasste Fehler im aktuellen Paket zu überprüfen.
– Führen Sie GoFiles aus, um die Liste der Quelldateien anzuzeigen, die dem aktuellen Paket entsprechen.
– Ausführen: GoDeps, zeigt die Liste der Abhängigkeitspakete des aktuellen Pakets an.
– Führen Sie Folgendes aus: GoImplements, zeigen Sie die vom aktuellen Typ implementierte Schnittstellenliste an.
– Ausführen: GoRename [to], ersetzen Sie das Symbol unter dem aktuellen Cursor durch [to].
3. Andere Plug-ins
Bisher haben wir noch eine Reihe von Funktionen, die nicht implementiert wurden, die wichtigsten Punkte sind:
– Code-Ergänzung für die Echtzeitverfolgung von Qi
– Code-Snippet-Unterstützung
1. Installieren Sie YCM (Your Complete Me)
Fügen Sie eine Zeile in ~/.vimrc hinzu:
Plugin 'Valloric /YouCompleteMe'
Nach dem Speichern und Beenden ~/.vimrc öffnen und ausführen: PluginInstall
Nach der Installation erscheint die folgende Eingabeaufforderung bar-Eingabeaufforderungen:
ycm_client_support.[so|pyd|dll] und ycm_core.[so|pyd|dll] nicht erkannt; Sie müssen YCM kompilieren, bevor Sie es verwenden!
YCM ist. In C++ geschriebene Module werden zur Optimierung der Leistung verwendet, daher muss die Unterstützungsbibliothek von YCM manuell kompiliert werden. Die Schritte sind wie folgt:
sudo yum install build-essential cmake python-dev cd ~/.vim/bundle/YouCompleteMe ./install.sh
Erstellen (das Kompilieren von C++ ist sehr langsam, Sie müssen eine Weile warten). Öffnen Sie nach OK hellogolang.go, und die Echtzeit-Abschlussfunktion wird ausgeführt verfügbar sein! Cool!
2. Installieren Sie UltiSnips
Vim-go默认是用ultisnips引擎插件,但这个插件需要单独安装。同样,我们利用vundle来安装它,在~/.vimrc中添加一行:
Plugin 'SirVer/ultisnips'
保存,退出vim
打开vim,执行:PluginInstall
编辑hellogolang.go,按照go.snip中的说明,我们输入func后敲击tab键,我们发现期待的:
func name(params) type { }
并没有出现。反倒是YCM的下拉提示显示在那里让你选择。似乎是ultisnips和YCM的键组合冲突了。ultisnips官方说明也的确如 此。ultisnips默认是用Tab展开snippet的,而YCM中的Tab用来选择补齐项,我们可以通过设置来避免这些。
我们在.vimrc中添加如下setting:
" YCM settings let g:ycm_key_list_select_completion = ['', ''] let g:ycm_key_list_previous_completion = [''] let g:ycm_key_invoke_completion = '<C-Space>' " UltiSnips setting let g:UltiSnipsExpandTrigger="<tab>" let g:UltiSnipsJumpForwardTrigger="<c-b>" let g:UltiSnipsJumpBackwardTrigger="<c-z>"
这样让YCM通过回车和向下的箭头来做list item正向选择,通过向上箭头做反向选择。通过ctrl+space来原地触发补齐提示。
而ultisnips则是用tab做snippet展开,ctrl+b正向切换占位符,ctrl+z反向切换占位符。
四、.vimrc
前面讲到了vim-go有许多命令,在:xx模式下执行多显不便,于是你可以定义一些Mappings,比如:
" set mapleader let mapleader = "," " vim-go custom mappings au FileType go nmap <Leader>s <Plug>(go-implements) au FileType go nmap <Leader>i <Plug>(go-info) au FileType go nmap <Leader>gd <Plug>(go-doc) au FileType go nmap <Leader>gv <Plug>(go-doc-vertical) au FileType go nmap <leader>r <Plug>(go-run) au FileType go nmap <leader>b <Plug>(go-build) au FileType go nmap <leader>t <Plug>(go-test) au FileType go nmap <leader>c <Plug>(go-coverage) au FileType go nmap <Leader>ds <Plug>(go-def-split) au FileType go nmap <Leader>dv <Plug>(go-def-vertical) au FileType go nmap <Leader>dt <Plug>(go-def-tab) au FileType go nmap <Leader>e <Plug>(go-rename)
这样我们在命令模式下,输入<,>+
另外下面这个配置使得我们在save file时既可以格式化代码,又可以自动插入包导入语句(或删除不用的包导入语句)。
" vim-go settings let g:go_fmt_command = "goimports"
到这里,我们的Vim Golang开发环境就基本搭建好了。snippet+实时补齐让你Coding如飞!
五、.vimrc文件
下面是截至目前为止全量.vimrc文件的内容: set nocompatible " be iMproved, required filetype off " required colorscheme molokai " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " let Vundle manage Vundle, required Plugin 'gmarik/Vundle.vim' Plugin 'fatih/vim-go' Plugin 'Valloric/YouCompleteMe' Plugin 'SirVer/ultisnips' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " set mapleader let mapleader = "," " vim-go custom mappings au FileType go nmaps (go-implements) au FileType go nmap i (go-info) au FileType go nmap gd (go-doc) au FileType go nmap gv (go-doc-vertical) au FileType go nmap r (go-run) au FileType go nmap b (go-build) au FileType go nmap t (go-test) au FileType go nmap c (go-coverage) au FileType go nmap ds (go-def-split) au FileType go nmap dv (go-def-vertical) au FileType go nmap dt (go-def-tab) au FileType go nmap e (go-rename) " vim-go settings let g:go_fmt_command = "goimports" " YCM settings let g:ycm_key_list_select_completion = ['', ''] let g:ycm_key_list_previous_completion = ['', ''] let g:ycm_key_invoke_completion = ' ' " UltiSnips settings let g:UltiSnipsExpandTrigger=" " let g:UltiSnipsJumpForwardTrigger=" " let g:UltiSnipsJumpBackwardTrigger=" "
更多golang知识请关注golang教程栏目。
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der VIM-Konfiguration der Go-Sprachumgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In Go umfasst der Funktionslebenszyklus Definition, Laden, Verknüpfen, Initialisieren, Aufrufen und Zurückgeben; der Variablenbereich ist in Funktionsebene und Blockebene unterteilt. Variablen innerhalb einer Funktion sind intern sichtbar, während Variablen innerhalb eines Blocks nur innerhalb des Blocks sichtbar sind .

In Go können WebSocket-Nachrichten mit dem Paket gorilla/websocket gesendet werden. Konkrete Schritte: Stellen Sie eine WebSocket-Verbindung her. Senden Sie eine Textnachricht: Rufen Sie WriteMessage(websocket.TextMessage,[]byte("message")) auf. Senden Sie eine binäre Nachricht: Rufen Sie WriteMessage(websocket.BinaryMessage,[]byte{1,2,3}) auf.

In Go können Sie reguläre Ausdrücke verwenden, um Zeitstempel abzugleichen: Kompilieren Sie eine Zeichenfolge mit regulären Ausdrücken, z. B. die, die zum Abgleich von ISO8601-Zeitstempeln verwendet wird: ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . Verwenden Sie die Funktion regexp.MatchString, um zu überprüfen, ob eine Zeichenfolge mit einem regulären Ausdruck übereinstimmt.

Go und die Go-Sprache sind unterschiedliche Einheiten mit unterschiedlichen Eigenschaften. Go (auch bekannt als Golang) ist bekannt für seine Parallelität, schnelle Kompilierungsgeschwindigkeit, Speicherverwaltung und plattformübergreifende Vorteile. Zu den Nachteilen der Go-Sprache gehören ein weniger umfangreiches Ökosystem als andere Sprachen, eine strengere Syntax und das Fehlen dynamischer Typisierung.

Speicherlecks können dazu führen, dass der Speicher des Go-Programms kontinuierlich zunimmt, indem: Ressourcen geschlossen werden, die nicht mehr verwendet werden, wie z. B. Dateien, Netzwerkverbindungen und Datenbankverbindungen. Verwenden Sie schwache Referenzen, um Speicherlecks zu verhindern, und zielen Sie auf Objekte für die Garbage Collection ab, wenn sie nicht mehr stark referenziert sind. Bei Verwendung von Go-Coroutine wird der Speicher des Coroutine-Stapels beim Beenden automatisch freigegeben, um Speicherverluste zu vermeiden.

Go-Funktionsdokumentation mit der IDE anzeigen: Bewegen Sie den Cursor über den Funktionsnamen. Drücken Sie den Hotkey (GoLand: Strg+Q; VSCode: Nach der Installation von GoExtensionPack F1 und wählen Sie „Go:ShowDocumentation“).

Das Testen gleichzeitiger Funktionen in Einheiten ist von entscheidender Bedeutung, da dies dazu beiträgt, ihr korrektes Verhalten in einer gleichzeitigen Umgebung sicherzustellen. Beim Testen gleichzeitiger Funktionen müssen grundlegende Prinzipien wie gegenseitiger Ausschluss, Synchronisation und Isolation berücksichtigt werden. Gleichzeitige Funktionen können Unit-Tests unterzogen werden, indem Rennbedingungen simuliert, getestet und Ergebnisse überprüft werden.

In Golang können Sie mit Fehler-Wrappern neue Fehler erstellen, indem Sie Kontextinformationen an den ursprünglichen Fehler anhängen. Dies kann verwendet werden, um die von verschiedenen Bibliotheken oder Komponenten ausgelösten Fehlertypen zu vereinheitlichen und so das Debuggen und die Fehlerbehandlung zu vereinfachen. Die Schritte lauten wie folgt: Verwenden Sie die Funktion „errors.Wrap“, um die ursprünglichen Fehler in neue Fehler umzuwandeln. Der neue Fehler enthält Kontextinformationen zum ursprünglichen Fehler. Verwenden Sie fmt.Printf, um umschlossene Fehler auszugeben und so mehr Kontext und Umsetzbarkeit bereitzustellen. Wenn Sie verschiedene Fehlertypen behandeln, verwenden Sie die Funktion „errors.Wrap“, um die Fehlertypen zu vereinheitlichen.
