"{register}pno funcionará como lo describe. Reemplazará la selección con el contenido del registro. En su lugar, tendrá que hacer algo como:
" I haven't found how to hide this function (yet)
function! RestoreRegister()
let @" = s:restore_reg
return ''
endfunction
function! s:Repl()
let s:restore_reg = @"
return "p@=RestoreRegister()\<cr>"
endfunction
" NB: this supports "rp that replaces the selection by the contents of @r
vnoremap <silent> <expr> p <sid>Repl()
Lo cual debería estar bien siempre y cuando no use un complemento que tenga un vmap que no sea nore ap, y que espere que se sobrescriba un registro.
Este código está disponible como script allí . Ingo Karkat también definió un complemento que resuelve el mismo problema.
regtype(¿linewise?) Y que reasignar ppgvyes suficiente."xp, esto no sobrescribe el@"contenido con@xdiferenciapgvy:xnoremap p pgv@=v:register.'y'<cr>?No me gusta el comportamiento por defecto vim de copiar todo el texto que ha de suprimirse
d,D,c, oCen el registro por defecto.Lo he solucionado mapeando
da"_d,ca"_c, y así sucesivamente.Desde mi .vimrc:
fuente
Utilice lo siguiente:
esto volverá a seleccionar y volver a tirar de cualquier texto que se pegue en modo visual.
Editar: para que esto funcione
"xp, puede hacer:v:registerse expande al último nombre de registro utilizado en un comando de modo normal.fuente
"xp, este enfoque se sobrescribe@"con@x.xnoremap p pgv"@=v:register.'y'<cr>no funcionó para mí. Esto, sin embargo, sí:xnoremap <expr> p 'pgv"'.v:register.'y'ghace? No lo había visto antes.gsolo no hace nada. Proporciona comandos extendidos de varias teclas, comoz. Por ejemplo,gova al enésimo byte en el búfer,gjygkva a la línea mostrada siguiente y anterior (difiere dejkcuando las líneas están ajustadas),gamuestra información sobre el carácter debajo del cursor,gJune líneas sin espacio y aquígvrestaura la última selección visual. Puede utilizar:help gv.:xnoremap <expr> p 'pgv"'.v:register.'y`>', agregué `` ''> `` Para restaurar la posición del cursorEn tus
.vimrcEncontré esto en una respuesta en un hilo similar, pero la fuente original era http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text . Menciona algunos inconvenientes, sin embargo, funciona bien para mí.
fuente
.vimrc.localtambién está bien.La solución de Luc Hermitte funciona de maravilla. Lo estuve usando durante aproximadamente una semana. Luego descubrí una solución de .vimrc de Steve Losh que funciona muy bien si YankRing es parte de su línea de complementos / paquetes:
fuente
Prueba esto en tu
~/.vimrc:xnoremapsignifica que esto es solo para elVisualmodo, no para losVisual + Selectmodos.<expr>significa que{rhs}elxnoremap {lhs} {rhs}escenario se evalúa como una expresión.En este caso, nuestra expresión de
'pgv"'.v:register.'y'se usa.para la concatenación.v:registerse evalúa al registro que se utiliza durante el cumplimiento del mapeo.El resultado de
"xpevaluaría apgv"xy, dondexestá el registro.Me ayudó una respuesta a esta pregunta de stackoverflow: Vim: mapeo con un prefijo de registro opcional junto con la respuesta de Benoit en esta página
fuente
La función de Luc funcionó bien para mí después de que hice un cambio para respaldar el hecho de que tengo portapapeles = conjunto sin nombre:
fuente
clipboard=unnamedplusesto tiene que ser en@+lugar de@*.¡Luc Hermitte hizo el truco! Realmente bueno. Aquí está su solución colocada en una función de alternancia, para que pueda cambiar entre el comportamiento normal y la colocación de registro sin reemplazo.
el comando, u alterna el comportamiento
fuente
silent! vunmaplugar devnoremap <silent> <expr> p pprogramación de cinta adhesiva, pero funciona para mí:
fuente
tratar -
fuente