在VIM中,文本块在可视模式下阻塞,然后粘贴块,将其粘贴到光标给出的所需列之后,但粘贴就地,覆盖当前行和后续行的内容.
有时我不想要这个,我想要的是粘贴一个带有光标位置给出的缩进的块,但粘贴在新的空行内,而不覆盖文本.
有没有办法做到这一点?
目前,要实现这一点,我创建了大量空行,消除了剩余的空行(不是很聪明……).
注意:我使用set virtualedit = all来粘贴所述空行中的任何列.
您可以尝试以下内容.无论您的领导关键是什么,按块方式拉动某些东西,定位光标并点击< leader> p.
function! FancyPaste() let paste = split(@",'\n') let spaces = repeat(' ',col('.')-1) call map(paste,'spaces . v:val') call append(line('.'),paste) endfunction nnoremap <leader>p :call FancyPaste()<CR>
更新:这是一个接受参数的版本.这就是你,例如改为从系统剪贴板粘贴.它还使用virtcol()而不是col()来考虑’virtualedit’的可能用途:
function! FancyPaste(reg) let paste = split(getreg(a:reg),virtcol('.')-1) call map(paste,paste) endfunction nnoremap <leader>p :call FancyPaste('"')<CR> nnoremap <leader>cp :call FancyPaste('+')<CR>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。