blob: a5253d908fb9b4e9d156c8c09a091867c778e524 [file] [log] [blame]
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00001*remote.txt* For Vim version 7.0aa. Last change: 2005 Apr 01
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Vim client-server communication *client-server*
8
91. Common functionality |clientserver|
102. X11 specific items |x11-clientserver|
113. MS-Windows specific items |w32-clientserver|
12
13{Vi does not have any of these commands}
14
15==============================================================================
161. Common functionality *clientserver*
17
18When compiled with the |+clientserver| option, Vim can act as a command
19server. It accepts messages from a client and executes them. At the same
20time, Vim can function as a client and send commands to a Vim server.
21
22The following command line arguments are available:
23
24 argument meaning ~
25
26 --remote [+{cmd}] {file} ... *--remote*
27 Open the file list in a remote Vim. When
28 there is no Vim server, execute locally.
29 There is one optional init command: +{cmd}.
30 This must be an Ex command that can be
31 followed by "|".
32 The rest of the command line is taken as the
33 file list. Thus any non-file arguments must
34 come before this.
35 You cannot edit stdin this way |--|.
36 The remote Vim is raised. If you don't want
37 this use >
38 vim --remote-send "<C-\><C-N>:n filename<CR>"
39< --remote-silent [+{cmd}] {file} ... *--remote-silent*
40 As above, but don't complain if there is no
41 server and the file is edited locally.
42 --remote-wait [+{cmd}] {file} ... *--remote-wait*
43 As --remote, but wait for files to complete
44 (unload) in remote Vim.
45 --remote-wait-silent [+{cmd}] {file} ... *--remote-wait-silent*
46 As --remote-wait, but don't complain if there
47 is no server.
48 *--servername*
49 --servername {name} Become the server {name}. When used together
50 with one of the --remote commands: connect to
51 server {name} instead of the default (see
52 below).
53 *--remote-send*
54 --remote-send {keys} Send {keys} to server and exit.
55 *--remote-expr*
56 --remote-expr {expr} Evaluate {expr} in server and
57 print the result on stdout.
58 *--serverlist*
59 --serverlist Output a list of server names.
60
61
62Examples ~
63
64Edit "file.txt" in an already running GVIM server: >
65 gvim --remote file.txt
66
67Edit "file.txt" in an already running server called FOOBAR: >
68 gvim --servername FOOBAR --remote file.txt
69
70Edit "file.txt" in server "FILES" if it exists, become server "FILES"
71otherwise: >
72 gvim --servername FILES --remote-silent file.txt
73
74This doesn't work, all arguments after --remote will be used as file names: >
75 gvim --remote --servername FOOBAR file.txt
76
77Edit file "+foo" in a remote server (note the use of "./" to avoid the special
78meaning of the leading plus): >
79 vim --remote ./+foo
80
81Tell the remote server "BLA" to write all files and exit: >
82 vim --servername BLA --remote-send '<C-\><C-N>:wqa<CR>'
83
84
85SERVER NAME
86
87By default Vim will try to register the name under which it was invoked (gvim,
88egvim ...). This can be overridden with the --servername argument. If the
89specified name is not available, a postfix is applied until a free name is
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000090encountered, i.e. "gvim1" for the second invocation of gvim on a particular
Bram Moolenaar071d4272004-06-13 20:20:40 +000091X-server. The resulting name is available in the servername builtin variable
92|v:servername|. The case of the server name is ignored, thus "gvim" and
93"GVIM" are considered equal.
94
95When Vim is invoked with --remote, --remote-wait or --remote-send it will try
96to locate the server name determined by the invocation name and --servername
97argument as described above. If an exact match is not available, the first
98server with the number postfix will be used. If a name with the number
99postfix is specified with the --servername argument, it must match exactly.
100
101If no server can be located and --remote or --remote-wait was used, Vim will
102start up according to the rest of the command line and do the editing by
103itself. This way it is not necessary to know whether gvim is already started
104when sending command to it.
105
106The --serverlist argument will cause Vim to print a list of registered command
107servers on the standard output (stdout) and exit.
108
109Win32 Note: Making the Vim server go to the foreground doesn't always work,
110because MS-Windows doesn't allow it. The client will move the server to the
111foreground when using the --remote or --remote-wait argument and the server
112name starts with "g".
113
114
115REMOTE EDITING
116
117The --remote argument will cause a |:drop| command to be constructed from the
118rest of the command line and sent as described above.
119The --remote-wait argument does the same thing and additionally sets up to
120wait for each of the files to have been edited. This uses the BufUnload
121event, thus as soon as a file has been unloaded, Vim assumes you are done
122editing it.
123Note that the --remote and --remote-wait arguments will consume the rest of
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000124the command line. I.e. all remaining arguments will be regarded as filenames.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125You can not put options there!
126
127
128FUNCTIONS
129 *E240* *E573*
130There are a number of Vim functions for scripting the command server. See
131the description in |eval.txt| or use CTRL-] on the function name to jump to
132the full explanation.
133
134 synopsis explanation ~
135 remote_expr( server, string, idvar) send expression
136 remote_send( server, string, idvar) send key sequence
137 serverlist() get a list of available servers
138 remote_peek( serverid, retvar) check for reply string
139 remote_read( serverid) read reply string
140 server2client( serverid, string) send reply string
141 remote_foreground( server) bring server to the front
142
143See also the explanation of |CTRL-\_CTRL-N|. Very useful as a leading key
144sequence.
145The {serverid} for server2client() can be obtained with expand("<client>")
146
147==============================================================================
1482. X11 specific items *x11-clientserver*
149 *E247* *E248* *E251* *E258* *E277*
150
151The communication between client and server goes through the X server. The
152display of the Vim server must be specified. The usual protection of the X
153server is used, you must be able to open a window on the X server for the
154communication to work. It is possible to communicate between different
155systems.
156
157By default, a GUI Vim will register a name on the X-server by which it can be
158addressed for subsequent execution of injected strings. Vim can also act as
159a client and send strings to other instances of Vim on the same X11 display.
160
161When an X11 GUI Vim (gvim) is started, it will try to register a send-server
162name on the 'VimRegistry' property on the root window.
163
164A non GUI Vim with access to the X11 display (|xterm-clipboard| enabled), can
165also act as a command server if a server name is explicitly given with the
166--servername argument.
167
168An empty --servername argument will cause the command server to be disabled.
169
170To send commands to a Vim server from another application, read the source
171file src/if_xcmdsrv.c, it contains some hints about the protocol used.
172
173==============================================================================
1743. Win32 specific items *w32-clientserver*
175
176Every Win32 Vim can work as a server, also in the console. You do not need a
177version compiled with OLE. Windows messages are used, this works on any
178version of MS-Windows. But only communication within one system is possible.
179
180Since MS-Windows messages are used, any other application should be able to
181communicate with a Vim server. An alternative is using the OLE functionality
182|ole-interface|.
183
184When using gvim, the --remote-wait only works properly this way: >
185
186 start /w gvim --remote-wait file.txt
187<
188 vim:tw=78:sw=4:ts=8:ft=help:norl: