Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
粘贴vim从粘贴的文本中剥离换行符_Vim - Fatal编程技术网

粘贴vim从粘贴的文本中剥离换行符

粘贴vim从粘贴的文本中剥离换行符,vim,Vim,我正在将大量的文本从PDF文档复制到vim中,但是当您从PDF文件(而不是web浏览器)执行复制粘贴时,每次PDF行在段落中中断时,复制的文本都会包含一个换行符。因此,当我使用“p”粘贴到vim中时,我必须多次按“J”来折叠换行符 我更希望有一个命令,我可以映射到键盘上的另一个字母,它接收复制文本的内容并粘贴它,删除换行符。你知道我该怎么做吗?你可以用我的。它提供了gcp/gcp映射,强制粘贴为字符式,即所有换行和缩进均展平为空格。它还有其他类似的映射,可以强制行模式,或者使用自定义分隔符粘贴,

我正在将大量的文本从PDF文档复制到vim中,但是当您从PDF文件(而不是web浏览器)执行复制粘贴时,每次PDF行在段落中中断时,复制的文本都会包含一个换行符。因此,当我使用“p”粘贴到vim中时,我必须多次按“J”来折叠换行符

我更希望有一个命令,我可以映射到键盘上的另一个字母,它接收复制文本的内容并粘贴它,删除换行符。你知道我该怎么做吗?

你可以用我的。它提供了
gcp
/
gcp
映射,强制粘贴为字符式,即所有换行和缩进均展平为空格。它还有其他类似的映射,可以强制行模式,或者使用自定义分隔符粘贴,等等。

这应该可以做到:

map <leader>xx :let @* = substitute(@*, "\n", "", "g")<CR>"*p
map xx:let@*=替换(@*,“\n”,“g”),“*p
使用您选择的映射更改
xx


此命令的作用是,在剪贴板寄存器(即星形寄存器)中,它将行尾字符(
\n
)替换为零(
)。然后它粘贴
*
寄存器中的文本。

谢谢,我将“”替换为““而且效果相当好。除了映射到xx之外,我还映射到了x,但是有更快的映射吗?我想将你的行动映射到字母“p”,并将“x”映射到“p”最初会做的事情,这可能吗?另外,是否可以使此映射不仅在正常模式下工作,而且在插入模式下工作?我不建议更改默认的
p
键,但如果您确实想这样做,请使用以下命令:
map p:let@*=substitute(@*,“\n”,”,“g”):put*
,然后
noremap x p
。对于插入模式,您需要使用
imap
并在命令前面加上
。没错,最好不要将p键映射到其他键。所以我把它映射到p,它工作得很好
映射p:let@*=substitute(@*,“\n”,”,“,“g”):put*
,但是插入模式下的映射似乎不起作用,我把这一行放在上面一行之后,对吗
imap:let@*=substitute(@*,“\n”,“”,“g”):put*
否,它需要是
imap…
,因此它要做的第一件事是退出插入模式。顺便问一下,有没有办法查看您正在考虑的映射是否尚未分配给其他对象?例如,我将它指定给“p”,但我如何知道它尚未使用?