D in Vim
Vim features and plugins useful for D coding.
Many Vim plugins require a plugin manager for installation. Vundle is one such plugin manager.
To install Vundle see the Quick Start section on Vundle's site.
UltiSnips is a Vim snippet plugin with D support. It makes it possible to complete tasks such as writing a loop, wrapping code in try/catch or adding an operator in a few keystrokes.
- Make sure you have a plugin manager such as Vundle installed.
- See the Quick Start section at UltiSnips site.
DSnips is a (greatly) improved version of UltiSnips D snippets. It covers almost all D features and its snippets are designed to work together (e.g. can be used within one another or in chains). See DSnips reference
- You need to have UltiSnips installed first.
git clone https://github.com/kiith-sa/DSnips.git
- Copy the d.snippets file to UltiSnips user snippets directory. On Linux this should be ~/.vim/UltiSnips.
If you don't know where the user snippets directory is, open a D file and type the :UltiSnipsEdit command (after UltiSnips is installed); this will open a user d.snippets file which you can replace by the DSnips version of d.snippets.
The Vebugger plugin acts as a frontend for command line debuggers, and can be used to debug D programs with GDB. You'll need to use :VBGstartGDBForD to debug D programs.
The vim-dlang-phobos-highlighter plugin allows highlighting of Phobos (functions, templates and types) and user defined functions, along with version identifiers.
With the rise of Neovim, deoplete-d can be used for auto-completion.
WIth this autocmd D will parse error messages from the compiler and the unit test assertions;
autocmd FileType d set efm=%*[^@]@%f\(%l\):\ %m,%f\(%l\\,%c\):\ %m,%f\(%l\):\ %m
The following function runs unittests on the current file and displays coverage information as a split window bound to left of the source window;
function! DTest() let l:fn = substitute(expand('%:r'), '/', '-', 'g') . '.lst' call delete(l:fn) cexpr system('dmd -cov -unittest -main -run ' . expand('%')) if filereadable(l:fn) normal gg execute '13vsplit' l:fn normal gg set scrollbind normal ^Wl set scrollbind endif endfunction
(note the ^W is a an actual CTRL-W, inserted with CTRL-V, CTRL-W)
autocmd FileType d nnoremap <f8> :call DTest()<cr>