You can call Comment withing <cmd> vim9script def g:Comment(m: string) if m == 'v' var l1 = line("'<") append(l1 - 1, ["assert(0);", "#if 0"]) var l2 = line("'>") append(l2, ["#endif"]) else var l1 = line(".") append(l1 - 1, ["assert(0);", "#if 0"]) var l2 = line(".") append(l2, ["#endif"]) endif enddef
map \cm <CMD>call Comment(mode(1))<CR> Or this one vim9script def g:Comment(line1: number, line2: number) var l1 = min([line1, line2]) var l2 = max([line1, line2]) append(l2, ["#endif"]) append(l1 - 1, ["assert(0);", "#if 0"]) enddef noremap \cm <cmd>call Comment(getpos('.')[1], getpos('v')[1])<CR><ESC> https://asciinema.org/a/uzzEAJiy2zdtHigNQiikiqz16 On Tuesday, August 5, 2025 at 1:18:46 PM UTC+10 russell shaw wrote: > On 4/8/25 20:26, Maxim Kim wrote: > > When you do `:<C-U>` you effectively exit visual mode. > > > > Instead try to use `xnoremap <F5> <cmd>echow getpos(".") getpos("v")<CR>` > > Hi, i found out about <cmd> a short time ago. > > vim9script > def g:Comment(m: string) > if m == 'v' > var l1 = line("'<") > append(l1 - 1, ["assert(0);", "#if 0"]) > var l2 = line("'>") > append(l2, ["#endif"]) > else > var l1 = line(".") > append(l1 - 1, ["assert(0);", "#if 0"]) > var l2 = line(".") > append(l2, ["#endif"]) > endif > enddef > > map \cm <CMD>let m = mode(1)<CR>:<C-U>call Comment(m)<CR> > > -- -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_use" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_use/8b70c0a4-a655-4e43-bf7d-d7a33d0bf1f1n%40googlegroups.com.