"{register}p
no 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 ppgvy
es suficiente."xp
, esto no sobrescribe el@"
contenido con@x
diferenciapgvy
: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
, oC
en el registro por defecto.Lo he solucionado mapeando
d
a"_d
,c
a"_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:register
se 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'
g
hace? No lo había visto antes.g
solo no hace nada. Proporciona comandos extendidos de varias teclas, comoz
. Por ejemplo,go
va al enésimo byte en el búfer,gj
ygk
va a la línea mostrada siguiente y anterior (difiere dejk
cuando las líneas están ajustadas),ga
muestra información sobre el carácter debajo del cursor,gJ
une líneas sin espacio y aquígv
restaura 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
.vimrc
Encontré 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.local
tambié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
:xnoremap
significa que esto es solo para elVisual
modo, no para losVisual + Select
modos.<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:register
se evalúa al registro que se utiliza durante el cumplimiento del mapeo.El resultado de
"xp
evaluaría apgv"xy
, dondex
está 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=unnamedplus
esto 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! vunmap
lugar devnoremap <silent> <expr> p p
programación de cinta adhesiva, pero funciona para mí:
fuente
tratar -
fuente