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:
Sé que hay plugins que cumplen esta
función, y seguramente lo hagan mejor, sin embargo prefiero tener la menor cantidad de plugins posible
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.