我在将大量的文本从PDF文档中复制到vim中时,与从Web浏览器复制不同,每当PDF在段落内换行时,复制的文本就会包含一个新行。因此,当我使用'p'将其粘贴到vim中时,我需要按下'J'键多次来折叠这些新行。我更希望有一种命令,可以映射到键盘上的其他字母上,以便将复制的文本内容粘贴并删除新行。您有什么想法如何做到这一点吗?
这样做应该可以了:map <leader>xx :let @* = substitute(@*, "\n", "", "g")<CR>"*p 将<leader>xx更改为您选择的映射。 此命令将在剪贴板寄存器(即星号寄存器)中用空字符串("")替换行末字符(\n)。然后粘贴来自*寄存器的文本。
你可以使用我的无条件粘贴插件来完成这个。它提供了gcp / gcP映射,可以强制粘贴为“逐字符”模式,即所有换行符和缩进都被转换为空格。它还具有其他类似的映射,用于强制使用按行模式粘贴,或者使用自定义分隔符进行粘贴等。
map p :let @* = substitute(@*, "\n", "", "g")<CR>:put*<CR>
,然后使用noremap <leader>x p
。对于插入模式,您需要使用imap
并在命令前加上<esc>
。 - mihaimap <leader>p :let @* = substitute(@*, "\n", " ", "g")<CR>:put*<CR>
,但是在插入模式下映射似乎不起作用,我在上面的那行代码后面加了这一行,这样正确吗?imap <leader>p :let @* = substitute(@*, "\n", " ", "g")<Esc><CR>:put*<CR>
- user779159imap <leader>p <esc>....
,这样它首先会退出插入模式。 - mihaimap <leader>p :let @* = substitute(@*, "\n", " ", "g")<CR>:put*<CR>
(我尝试删除第一个<CR>,但那样会出现错误。谢谢!) - user779159