현재 파일 이름을 기반으로 vim에서 다른 파일을 엽니다.

현재 파일 이름을 기반으로 vim에서 다른 파일을 엽니다.

Go로 작업할 때 작업 중인 각 .go 파일에 해당하는 테스트 파일을 열 수 있고 그 반대의 경우도 가능했으면 합니다. 따르는 형식은 foo.go에 해당합니다 foo_test.go. 존재한다면 항상 같은 폴더에 있을 것이라고 가정할 수 있습니다. 버퍼, 탭 또는 현재 버퍼에서 열리는지 상관하지 않고 버튼을 누르고 둘 사이를 전환할 수 있기를 원합니다. 어떻게 해야 하나요?

답변1

.cC/C++ 와 .h파일 사이를 전환할 수 있는 몇 가지 플러그인이 있습니다 . 일부는 사용 사례에 맞게 구성할 수 있습니다. 그러나 이러한 매핑(또는 명령)은 다음과 같이 쉽게 정의할 수 있습니다 <Leader>a.

:nnoremap <expr> <Leader>a ':edit ' . (expand('%:t:r') =~? '_test$' ? expand('%:s?_test??') : expand('%:r') . '_test.' . expand('%:e')) . '<CR>'

이는 명령 :help filename-modifiers을 추출, 비교 및 ​​조합하는 데 사용됩니다 :edit.

위의 내용은 전역적으로 사용됩니다 ~/.vimrc. Go 파일에만 적용하려면 :nnoremap <buffer> <expr> ... 그런 다음 앞에 추가 :autocmd Filetype go하고 이를 에 넣거나 ~/.vimrc, 다양한 파일 형식에 대한 매핑 및 기타 설정을 추가하면 다루기 어려워지므로 명령을 ~/.vim/ftplugin/go_mappings.vim. (이를 위해서는 가 필요합니다 :filetype plugin on.)

답변2

문제에 대한 드롭인 솔루션을 위해 Go 런타임 파일의 포크를 사용하는 것을 고려해 보십시오.https://github.com/AndrewRadev/vim-golang.

이는 :A명령군을 정의합니다(관련 정의는 다음과 같습니다).여기, 파일 이름 수정은 다음과 같습니다.여기).

이는 기본적으로 Ingo Karkat의 답변이며 플러그인에 포함되어 있으므로 :help filename-modifiers그의 조언을 읽고 따르는 것이 확실히 좋은 방법입니다.

답변3

플러그인을 추천해드릴 수 있어요vim-twitch이 문제를 해결하기 위해.

관련 정보