How can I open several files at once in Vim?

后端 未结 6 1023
渐次进展
渐次进展 2021-01-30 07:55

Is there a way to open all the files in a directory from within Vim? So a :command that would say in effect \"Open all the files under /some/path into

相关标签:
6条回答
  • 2021-01-30 08:25

    If you'd like to add to the argument list;

    :arga what_you-d_like_to_add
    

    see

    :he arga
    

    from/in vim for more information.

    0 讨论(0)
  • 2021-01-30 08:33

    Did you try

    :n /some/path/*
    

    It will open all files in /some/path

    I don't think it'll open file recursively though.

    EDIT

    Maybe using ** will open recursively as daf mentionned

    0 讨论(0)
  • 2021-01-30 08:35

    Another way to open files recursively

    find . -type f -exec vi {} \;
    
    0 讨论(0)
  • 2021-01-30 08:45

    A method that doesn't require messing with args is to put the list of files in a text file, and then use the :so command to run the commands in that file.

    For example, if you want to open all the files that end in .php in a given directory, first create files.txt containing the list of files, prepended with whatever command you want to use to open them.

    sp alpha.php
    sp bravo.php
    sp charlie.php
    

    Then, within vim:

    :so files.txt
    

    If the list of files is large, it's relatively trivial to generate the files.txt file quickly, by redirecting the output of ls to a file, and then using a vim macro to prepend sp before each filename.

    This obviously isn't as elegant as using the args and argdo commands, but those commands are also a lot more complicated.

    There also might be a way to do this with a single command on the command line, but even after 16 years I still find vim programming to be strange and arcane.

    0 讨论(0)
  • 2021-01-30 08:46

    The command you are looking for is args:

    For example:

    :args /path_to_dir/*
    

    will open all files in the directory

    0 讨论(0)
  • 2021-01-30 08:47

    Why it doesn't work if I want to open all files ending with a certain extension? I tried

    :n ./**.cs
    

    and opens only the files in the currenty directory.

    I found the answer.The correct code is :n **/*.cs

    For more information :h find

    0 讨论(0)
提交回复
热议问题