
Wenn ich mit Go arbeite, möchte ich die Möglichkeit haben, für jede .go-Datei, mit der ich arbeite, die entsprechende Testdatei zu öffnen und umgekehrt. Das verwendete Format entspricht foo.go
. foo_test.go
Ich kann davon ausgehen, dass es sich, falls vorhanden, immer im selben Ordner befindet. Es ist mir egal, ob es in einem Puffer, einer Registerkarte oder sogar im aktuellen Puffer geöffnet wird. Ich möchte einfach eine Taste drücken und zwischen beiden wechseln können. Wie mache ich das?
Antwort1
Es gibt einige Plugins, die zwischen C/C++ .c
und .h
Dateien wechseln können; einige sind möglicherweise so konfigurierbar, dass sie Ihren Anwendungsfall abdecken. Eine solche Zuordnung (oder ein solcher Befehl) kann jedoch leicht definiert werden, z. B. für <Leader>a
:
:nnoremap <expr> <Leader>a ':edit ' . (expand('%:t:r') =~? '_test$' ? expand('%:s?_test??') : expand('%:r') . '_test.' . expand('%:e')) . '<CR>'
Dies dient :help filename-modifiers
zum Extrahieren, Vergleichen und Zusammenstellen eines :edit
Befehls.
Das Obige gilt global für die Verwendung in ~/.vimrc
; wenn Sie dies nur für Go-Dateien möchten, verwenden Sie . :nnoremap <buffer> <expr> ...
Stellen Sie dann entweder voran :autocmd Filetype go
und fügen Sie das in Ihr ein ~/.vimrc
, oder fügen Sie die Befehle in ein, da das unhandlich wird, wenn Sie Zuordnungen und andere Einstellungen für verschiedene Dateitypen hinzufügen ~/.vim/ftplugin/go_mappings.vim
. (Hierfür müssen Sie über verfügen :filetype plugin on
.)
Antwort2
Als Drop-In-Lösung für das Problem können Sie meinen Fork der Go-Runtime-Dateien verwenden:https://github.com/AndrewRadev/vim-golang.
Es definiert die :A
Befehlsfamilie (relevante Definitionen sindHier, Dateinamenänderung istHier).
:help filename-modifiers
Im Prinzip handelt es sich jedoch um die in einem Plug-In verpackte Antwort von Ingo Karkat . Es ist also auf jeden Fall eine gute Idee, sich seinen Rat durchzulesen und zu befolgen.
Antwort3
Ich kann das Plugin empfehlenvim-zuckenum dieses Problem zu beheben.