Neovim - Definir comment symbol, múltiples símbolos & lenguages

Escrito por Lyoneel el en neovim
 1 min

Neovim - Definir comment symbol, múltiples símbolos & lenguages

Definir comment_symbols sin extra plugins, para diferentes lenguages

Migrando parte de mi workflow a Neovim, me encontré con este problema, que lo solucioné de la siguiente manera:

vim.api.nvim_exec([[
augroup visual_commenting
    autocmd!
    autocmd FileType c,cpp,java,rust,go,kt,kts,zig      let b:comment_symbol = '//'
    autocmd FileType vim                                let b:comment_symbol = '"'
    autocmd FileType sh,python,yaml,yml,nix             let b:comment_symbol = '#'
    autocmd FileType tex                                let b:comment_symbol = '%'
    autocmd FileType lua                                let b:comment_symbol = '--'
    autocmd BufEnter * silent! vnoremap <silent> <C-_> :<C-u>keepp '<,'>s@^@\=b:comment_symbol<CR>
    autocmd BufEnter * silent! exec 'vnoremap <silent> <C-?> :<C-u>keepp ''<,''>s@^' . b:comment_symbol . '@<CR>'
augroup END
]], false)

Esto sólo soluciona aquellos comentarios que se hacen al principio de la línea, no soporta comentarios de bloque, pero es suficiente para mi caso de uso.

Se pueden agregar las líneas que necesites para otros lenguages y símbolos más esotéricos, si algo hiciste mal, o el lenguage no está definido obtendras el siguiente mensaje comment_symbol is not recognized.

Debe haber una solución que es más cercana a las formas de Neovim, pero esto funciona.

Este código esta basado en esta respuesta del StackExchange de Vi y adaptada para que Lua lo pueda ejecutar.