将VIM密钥序列应用于目录中的所有文件

时间:2013-05-07 16:05:15

标签: linux shell vim

我想使用VIM的gg=G命令缩进我的所有文件。反正写一个脚本来做那个吗?

我想它可能像

find . | xargs -n 1 | vim [ with some option to indent ]

我很确定vim -c可能有所帮助,但不确定gg=G等价物是什么。

3 个答案:

答案 0 :(得分:3)

vim有两个你可以看一看的选项:(来自man vim)

 -s {scriptin}
                   The script file {scriptin} is read.  The characters in the file are interpreted as if you had typed them.  The same can be  done  with  the  command
                   ":source! {scriptin}".  If the end of the file is reached before the editor exits, further characters are read from the keyboard.

  -w {scriptout}
               All the characters that you type are recorded in the file {scriptout}, until you exit Vim.  This is useful if you want to create a script file to be
               used with "vim -s" or ":source!".  If the {scriptout} file exists, characters are appended.

这意味着,您可以按vim -w script记录您的密钥序列,例如gg=GZZ,然后您可以vim -s script file

我认为vimgolf也使用这种机制。

答案 1 :(得分:0)

您可以使用bufdo将命令应用于所有缓冲区,并使用normal gg=G运行普通模式命令gg=G。并wqall保存所有内容。

答案 2 :(得分:0)

您可以在vim中完成以下所有操作。

:args `find .`
:argdo normal gg=G
:argdo w

这会构建argslist,然后在argslist中的每个文件上运行正常命令gg=G。然后我们将每个文件保存在argslist中。注意:这需要set hidden

Vimcast处的Drew Neil有一些关于这个主题的精彩截屏:

如需更多帮助,请参阅:

:h argslist
:h 'hidden'