Vim Tips Wiki
(need more info about edit)
(→‎Using file associations: Updated for Vim 7.2 and added info on default for text files)
Line 19: Line 19:
   
 
<pre>
 
<pre>
ftype code="C:\Program Files\Vim\vim71\gvim.exe" --remote-tab-silent "%1"
+
ftype code="C:\Program Files\Vim\vim72\gvim.exe" --remote-tab-silent "%1"
 
assoc .c=code
 
assoc .c=code
 
assoc .h=code
 
assoc .h=code
Line 25: Line 25:
   
 
Now, double-clicking on .c or .h files will open them in tabs in a single instance of gvim.
 
Now, double-clicking on .c or .h files will open them in tabs in a single instance of gvim.
  +
  +
To make Vim the editor for all text file types (as defined by MS Windows) try
  +
  +
<pre>
  +
ftype txtfile="C:\Program Files\Vim\vim72\gvim.exe" --remote-tab-silent "%1"
  +
</pre>
   
 
===Using the Windows ''Send To'' menu===
 
===Using the Windows ''Send To'' menu===

Revision as of 23:49, 6 January 2010

Duplicate tip

This tip is very similar to the following:

These tips need to be merged – see the merge guidelines.

Tip 1440 Printable Monobook Previous Next

created December 14, 2006 · complexity basic · author Xu Song · version n/a


Many text editors automatically launch new files in tabs, rather than use a separate window for each new file. Here's how to make Vim behave that way under Microsoft Windows.

Using file associations

To automatically open a file in a Vim tab with a double-click or other "Open" action, you need to set up file associations. Open a command prompt window (Start, Run cmd.exe). This example uses C source-code files – modify the commands for whatever file types you want. At command prompt, type (you may need to change the path to suit your system):

ftype code="C:\Program Files\Vim\vim72\gvim.exe" --remote-tab-silent "%1"
assoc .c=code
assoc .h=code

Now, double-clicking on .c or .h files will open them in tabs in a single instance of gvim.

To make Vim the editor for all text file types (as defined by MS Windows) try

ftype txtfile="C:\Program Files\Vim\vim72\gvim.exe" --remote-tab-silent "%1"

Using the Windows Send To menu

Obviously you can't enter file associations for every file you'll ever open in Vim. To provide an "open in tabs" capability for files without an association, you can add an entry to your "Send To" context menu, as follows:

  1. Click Start, Run then type SendTo and press Enter. If the Profile path for your user name has been changed, you may need to run %USERPROFILE%\SendTo rather than just SendTo. For Vista go to %APPDATA%\Microsoft\Windows\SendTo.
  2. The SendTo directory should now be open. It contains the shortcuts in your Send To context menu. Right-click the SendTo window and add a new shortcut to gvim.
  3. Edit the 'Target' box in the Properties of the gvim shortcut to read (you may need to change this for your path to gvim):
    "C:\Program Files\Vim\vim71\gvim.exe" --remote-tab-silent
    .

In Windows Explorer, right-click one or more files, and select Send To, gvim in the context menu. You can repeat this to open other files in new tabs in the same Vim instance.

Using different gvim instances for different file types

If wanted, you can define file associations so that certain file types are opened in one instance of gvim, while others are opened in a different instance.

For example, the following will cause .log and .txt files to be opened in an instance of gvim named TXTVIM, while .c and .h files would be opened in another instance using the code example given earlier.

ftype txtfile="C:\Program Files\Vim\vim71\gvim.exe" --servername TXTVIM --remote-tab-silent "%1"
assoc .log=txtfile
assoc .txt=txtfile

SendTo menu items for specific Vim instances can be created in the same way, by adding a --servername option before the --remote-tab-silent in the target for the shortcut created in the section above.

Note that the .txt extension defaults to the txtfile association on Windows. In fact, many extensions are already associated with txtfile, so just setting the ftype as above will automatically set the correct behavior for several filetypes, more of which (such as .log) can be added with assoc as shown.

To see a list of current associations on your system, type assoc with no arguments in a cmd window. Or, for easier viewing, read the list into Vim with

:r !assoc

See also

Comments

If the above tips don't seem to work, take a look at VimTip1225. I had to make some additional regedits


An annonymous user added the following below #Using file associations:

Using the Windows Open or Double-Click to open files in gvim tabs

To provide an "open in tabs" capability for files without an association on Double-Click or Open menu one need to edit registry as follows:

  1. Click Start, Run then type regedit and press Enter.
  2. Edit the registry HKEY_CLASSES_ROOT\Applications\gvim.exe\open\command and set the Value Data to
    C:\Program Files\Vim\vim72\gvim.exe --remote-tab-silent "%1"
    The path might need to be modified for the location of gvim on your machine.

In Windows Explorer, double-click one or more files and they should open in tabs in gvim!

I'm OK with this content (if it works) but it needs explanation. How does it work? Why would you want to use this instead of file associations? What does it do? Does it launch ALL files in Vim, or just files without an association already set up?

It also needs a better, more descriptive title. The file associations method also allows you to double-click or use the "open" context menu item to open a file, what does this method do differently?

Finally, it has become our practice, when suggesting a registry edit, to place the Registry Warning template before the suggested registry tweak. Do this simply by adding {{RegistryWarning}} prior to the registry entry instructions.

Thanks for the addition, annonymous user, please feel free to help fix it up!

--Fritzophrenic 16:14, November 6, 2009 (UTC)