_ _ _ _ ~
/_\ | | |_ ___ _ __ _ __ __ _| |_ ___ _ __ ~
//_\\| | __/ _ \ '__| '_ \ / _` | __/ _ \| '__|~
/ _ \ | || __/ | | | | | (_| | || (_) | | ~
\_/ \_/_|\__\___|_| |_| |_|\__,_|\__\___/|_| ~
Alternating between headers, source files,
template implementations and others with blazing speed!
Just call :Alternate
and the window will open
a matching source/header file to the currently opened one.
The file extensions the plugin looks for are stored in the following arrays:
g:alternator_header_extensions
g:alternator_source_extensions
Default values are as follows:
let g:alternator_header_extensions = [ '.h', '.hpp', '.tpp', '.ipp' ]
let g:alternator_source_extensions = [ '.c', '.cpp' ]
If there are some folders you do not want to scan,
the array g:alternator_blacklist_folders
holds such folder names.
Default value is:
[ 'node_modules', '.git' ]
Alternate
- strips the longest extension, and then looks for a file with the same name, but a different extension
- it cycles through all the extensions, starting from the longest matching one
Note: it supports even non-standard extensions, doesn't have to be an e.g. .hpp
(see example below)
let g:alternator_source_extensions = [ '.c' ]
let g:alternator_header_extensions = [ '_impl.h', '.h' ]
:edit action.c
:Alternate
# the longest matching extension is '.c', basename is 'action',
# so it will start the search with the next one, 'action_impl.h'
:edit action_impl.h
:Alternate
# the longest matching extension is '_impl.h', basename is 'action',
# so it will start the search with the next one, 'action.h'
The only mapping this plugin provides is:
<Plug>(Alternate)
If you have fd
in your path, it will be used instead of vim's findfile
.