annotate runtime/doc/remote.txt @ 7:3fc0f57ecb91 v7.0001

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