online metrologia mac for vim

metrologia - vim online



Vim-mapeo con un prefijo de registro opcional (2)

Así que descubrí que una tarea común para mí en Vim es PONER al comienzo de la línea o al final de la línea. Entonces mi mapeo podría ser:

nmap <Leader>p $p nmap <Leader>P 0P

Sin embargo, lo que realmente me gustaría hacer es incluir opcionalmente un registro antes de poner.

Entonces, por ejemplo, "a, P pondría desde el registro a al comienzo de la línea.

¿Hay alguna manera de hacer esto con un mapeo?


Puede hacer esto usando mapeo <expr> en una línea:

nnoremap <expr> /p ''$"''.v:register.v:count1.''p'' nnoremap <expr> /P ''0"''.v:register.v:count1.''P''


Esto es perfectamente posible. Primero pensé que esta solución era posible: https://.com/a/290723/15934 , pero <expr> no nos deja mover el cursor como deseamos, y no se puede usar normal .

Aún así, podemos hacer esto:

function! s:PutAt(where) " <setline($+1> appends, but <setline(0> does not insert, hence the hack " with getline to build a list of what should be at the start of the buffer. let line = a:where ==1 / ? [getreg(), getline(1)] / : getreg() call setline(a:where, line) endfunction nnoremap <silent> <leader>P :call <sid>PutAt(1)<cr> nnoremap <silent> <leader>p :call <sid>PutAt(line(''$'')+1)<cr>