Öffnen Sie eine andere Datei in vim basierend auf dem Namen der aktuellen Datei

Öffnen Sie eine andere Datei in vim basierend auf dem Namen der aktuellen Datei

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.goIch 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++ .cund .hDateien 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-modifierszum Extrahieren, Vergleichen und Zusammenstellen eines :editBefehls.

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 gound 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 :ABefehlsfamilie (relevante Definitionen sindHier, Dateinamenänderung istHier).

:help filename-modifiersIm 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.

verwandte Informationen