Open files in existing Gvim in multiple (new) tabs

前端 未结 6 1891
耶瑟儿~
耶瑟儿~ 2020-12-12 10:47

I have put some aliases in my .bashrc to open a group of project files in gvim, each in their own tab:

gvim -p 

        
相关标签:
6条回答
  • 2020-12-12 11:20

    Want your Windows context menu to allow you to open files in a new tab of the currently open gvim window?

    Save this as as a file called temp.reg and double-click it to add the settings to your registry. Be sure to modify the path to vim if yours is different.

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\*\Shell\Open with &Vim]
    [HKEY_CLASSES_ROOT\*\Shell\Open with &Vim\command]
    @="\"C:\\Program Files (x86)\\Vim\\vim73\\gvim.exe\" -p --remote-tab-silent \"%1\" \"%*\""
    

    You will now have a context menu like this:

    vim context menu

    0 讨论(0)
  • 2020-12-12 11:23

    Linux users may use this kind of script:

    #!/bin/bash
    
    ANS=`pgrep -fx "gvim --servername GVIM"`
    
    echo $@
    
    if [[ ! $ANS ]]; then
        gvim --servername GVIM
    fi
    
    if [[ $1 ]]; then
        gvim --servername GVIM --remote-tab "${@}"
    fi
    

    And then edit gvim.desktop file for using this script:

    Exec=/home/user/bin/my_gvim_script.sh %F
    
    0 讨论(0)
  • 2020-12-12 11:26

    From inside of Gvim, type :tabe {file_name}. This opens the named file in a new tab. If you aren't fond of typing long filenames, try this:

    :tabnew
    :e .
    

    This will open a new, blank tab page and open a file browser. You can mouse click your way around or use the keyboard. Click or hit the enter key on the file you want to open it. Try using the keyboard to position the cursor over the file you want to open and then hit 't'. This opens the selected file in a new tab, keeping the file browser open in the first tab. This might be a fast way to open a bunch of files.

    There are a whole lot of things you can do with tab pages that might make life easier. To get to the relevant section in Vim's on line help manual, type :h tabpage.

    0 讨论(0)
  • 2020-12-12 11:32

    There is a way:

    n*.cpp|tab ba
    

    or if you like to split:

    n*.cpp|sba
    

    If you wish to know more:

    :help ba
    

    and I don't know what is n , but it would not work without it.

    0 讨论(0)
  • 2020-12-12 11:35

    If vim is compiled with the clientserver option, you can do it. Start your vim instance with the following flag:

    $ gvim --servername GVIM  # GVIM is the server name. It can be anything.
    

    To open more tabs in this instance, you can run the command:

    $ gvim --servername GVIM --remote-tab file1 file2 file3 ...
    

    The clientserver feature in vim is very handy. It's not limited to opening files; it can be used to send any command to vim using the command-line. For example, to close a vim instance remotely, you can use:

    $ gvim --servername GVIM --remote-send '<Esc>:wqa<CR>'
    
    0 讨论(0)
  • 2020-12-12 11:37

    Here is my gvim start-up script. It is an extension of previous answers. It ensures only one gvim instance will run when gvim is called under all circumstances:

    • gvim is called without filename when no gvim instance is running; gvim is started.
    • gvim is called without filename in the presence of a gvim instance; an empty new tab is opened.
    • gvim is called with a filename with or without a gvim instance; a tab is opened showing the file.

    This will mimic the standard behaviour of other editors.

    #!/bin/bash
    exec=/usr/bin/gvim  #the path to gvim
    if [ $# -eq 0 ]
      then  # no filename given
        if [ -z $($exec --serverlist) ]
          then  # no filename given and no gvim instance
            $exec -f --servername GVIM > /dev/null 2>&1
          else  # no filename given, but a gvim instance exists
            $exec -f --servername GVIM --remote-send ':tabnew<CR>' > /dev/null 2>&1
        fi
      else  # filenames given
        $exec -f --servername GVIM --remote-tab "$@" > /dev/null 2>&1
    fi
    
    0 讨论(0)
提交回复
热议问题