如何用 vim 将文档中的所有单词换行?

How to wrap all words in a document with vim?

Here 是文件,第 97 行及以下是我想放入 python 字典中的行,想法是冒号 ':' 左侧的单词将变为键和它的右侧将是值。所有键和值都必须是字符串,为此我需要将所有单词(从第 97 行及以下)用引号引起来。所以问题是 如何将文档中的所有单词用引号括起来?

我这样做的目的是获取列名,用于机器学习的预处理。如果您有兴趣,可以找到没有名称的列 here.

如果您不 post 代码,则很难确切地知道您的意思(不,我不会从网上随机的人那里下载并打开一个名为 adult.names 的文件互联网)。但是,如果您只想将每个单词都用引号引起来,则可以使用全局替换:

:%s/\w\+\ze[\s, \n, :]\+/"[=10=]"/g

解释:

  • :s/regex/text 将在当前行用 text 替换 regex 匹配的任何内容。
  • 在开头添加一个%,它将对所有行执行此操作。
    • 如果您只想对文档的一部分执行此操作,请进行视觉选择,然后 运行 此命令不带 %
  • \w匹配一个单词字符
  • \ze 结束匹配(因此您可以指定匹配的内容之后的内容)
  • [\s, \n, :] 表示匹配空格、换行符和冒号,后面的 \+ 表示匹配其中的非零个数(即至少一个空白字符或换行符或冒号) .

所有这些加在一起意味着它会单独匹配每个单词。

  • 然后,对于每个匹配的单词,它用引号替换它,然后是 [=20=](表示之前替换的第一个词)和另一个引号。
  • 末尾的 /g 意味着它会在每一行找到正则表达式时多次执行此替换。否则它只会替换每一行的第一个匹配项。

结果应该是每个单词都用引号引起来。但同样,如果不了解您正在使用的内容,就很难测试并找到正确的解决方案。以后请把相关代码放在你的post.