【问题标题】:Using argdo with set with vim使用 argdo 和 vim 设置
【发布时间】:2014-11-23 03:30:36
【问题描述】:

我正在尝试对多个文件运行命令“set tabstop=4”然后“retab”。

我已经到了像这样获取我的 arglist 的地步

args ~/workspace/**/*.java

当我只是使用 args 命令查看文件时,我可以看到这个效果很好。现在,当我尝试对其运行“set tabstop=4”命令时,我无法获得正确的组合。我试过了

argdo "set tabstop=4" 

然后

argdo "update" 

但它似乎从未应用更新,我确信有更新,因为我可以单独转到其中一个文件并运行命令并更改文件。我尝试过不同的组合,例如

argdo execute "set tabstop=4"

而且它似乎从来没有做任何事情。任何帮助将不胜感激!

【问题讨论】:

  • “argdo retab”怎么样

标签: vim args tabstop


【解决方案1】:

:argdo 的语法(根据:help)是

:argdo[!] {cmd}

不涉及引用。要一次性执行多个命令,只需将它们用| 分隔即可:

:argdo set tabstop=4 | retab | update

【讨论】:

  • 所以我尝试这样做,它确实更新了文件 - 但由于某种原因,当我在 vim 中单独查看文件时(缩进已从 argdo 命令更改),它没有与仅对文件执行 set tabstop=4 具有相同的效果,即,一旦我运行该命令,然后再单独转到一个文件并运行“set tabstop=4”,它就会再次更改。
  • :retab 命令比较棘手,你可能需要传递一个数字 (:retab 8) 才能使其生效,当原始文件使用空格进行缩进时,还可以添加 !。最好在单个缓冲区上找到正确的命令,然后通过:argdo 应用。
  • 因此,如果我转到一个我可以用缩进弄乱的文件,我只需执行一个 :set tabstop=4 并查看所有内容,因此我确信该命令可以完美运行文件,但现在我尝试了 :argdo set tabstop=4 |更新,但效果仍然不一样(似乎为制表符添加了更大的数字)
  • 实际上我按照你的建议做了一个 retab 8,我想我需要像你说的那样解决这个问题
  • :set tabstop=... 只是改变 Vim 为 Tab 字符显示的空间量;它不会更改文件本身!只有:retab 会这样做!
猜你喜欢
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多