如何在 vim 输入中将不可破坏的空格替换为常规空格

问题描述 投票:0回答:1

我在使用 vim 粘贴从电子书复制的文本到源代码时遇到问题,“不可破坏的空格”最终会在编译时收到来自 gcc 的错误消息。

典型的错误消息是:

filename.c:69:6: error: stray ‘\302’ in program
 69 | <U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0><U+00A0>return 1;

我使用的简单解决方案是运行

:%s/\%ua0/ /g
- 使它们成为常规空间。

有没有一种方法可以在 vim 中输入时自动发生这种情况(从终端粘贴),例如

.vimrc
中的命令或设置?

vim configuration
1个回答
0
投票

我不是vim专家,我不知道是否有办法自动做你想做的事。但是,我的方法是使用 vim

map
命令将特定的按键序列映射到要执行的命令。实际上,这设置了一个新命令,您可以在文本插入模式之外键入该命令。

为了说明这个概念,这是我在 .vimrc 文件中的两个映射(我使用

^M

 来表示嵌入的换行符。您可以通过键入 
<Control>+v
 后跟 
<Enter>
 来嵌入它。

map MM :!clear^M:!make^M map FF /\${[^}]*}^M
第一个映射 

MM

 导致运行两个 shell 命令。第一个命令是 
clear
,第二个命令是 
make

第二个映射

FF

执行搜索以突出显示
${<something>}
形式的文本(我用它来突出显示模板文件中的占位符变量)。

根据上面的示例,我

认为以下内容将执行您想要的操作(选择您想要的任何键序列;我只是使用UU

作为示例):

map UU :%s/\%ua0/ /g^M
如果您使用上述映射,则每当您键入 

UU

(在文本插入模式之外)时,都会执行全局搜索和替换。

© www.soinside.com 2019 - 2024. All rights reserved.