vim – 如何在创建必要的行时粘贴块以仅为块提供空间?
发布时间:2020-12-15 17:01:48 所属栏目:安全 来源:网络整理
导读:在VIM中,文本块在可视模式下阻塞,然后粘贴块,将其粘贴到光标给出的所需列之后,但粘贴就地,覆盖当前行和后续行的内容. 有时我不想要这个,我想要的是粘贴一个带有光标位置给出的缩进的块,但粘贴在新的空行内,而不覆盖文本. 有没有办法做到这一点? 目前,要实现
在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> 请记住,它只会缩进空格而不是制表符.使用适当数量的选项卡(以及需要时的空格)缩进将需要一些额外的代码行,但是非常可行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |