]> code.delx.au - gnu-emacs/blobdiff - doc/misc/tramp.texi
-
[gnu-emacs] / doc / misc / tramp.texi
index 14afb4ad353bc4c8e56ecce90ed8b43f74dd6a7a..37bf7ea8bc48d792878284555b97404d4ef4b3e5 100644 (file)
 @include trampver.texi
 
 @c Macro for formatting a file name according to the respective syntax.
-@c xxx and yyy are auxiliary macros in order to omit leading and
+@c Macro arguments should not have any leading or
 @c trailing whitespace.  Not very elegant, but I don't know it better.
 
-@c There are subtle differences between texinfo 4.13 and 5.0.  We must
-@c declare two versions of the macro.  This will be improved, hopefully.
-
-@c Texinfo 5.0.
-@ifset txicommandconditionals
-@macro xxx {one}
-@set \one\
-@end macro
-
-@macro yyy {one, two}
-@xxx{x\one\}@c
-@ifclear x
-\one\@w{}\two\@c
-@end ifclear
-@clear x\one\
-@end macro
-
-@macro trampfn {method, user, host, localname}
+@macro trampfn {method, userhost, localname}
 @value{prefix}@c
-@yyy{\method\,@value{postfixhop}}@c
-@yyy{\user\,@@}@c
-\host\@value{postfix}\localname\
+\method\@value{postfixhop}@c
+\userhost\@value{postfix}\localname\
 @end macro
-@end ifset
 
-@c Texinfo 4.13.
-@ifclear txicommandconditionals
-@macro xxx {one}@c
-@set \one\@c
-@end macro
+@c Similar, but without a method prefix.
 
-@macro yyy {one, two}@c
-@xxx{x\one\}@c
-@ifclear x@c
-\one\@w{}\two\@c
-@end ifclear
-@clear x\one\@c
-@end macro
-
-@macro trampfn {method, user, host, localname}@c
-@value{prefix}@yyy{\method\,@value{postfixhop}}@yyy{\user\,@@}\host\@value{postfix}\localname\@c
+@macro trampf {userhost, localname}
+@value{prefix}@c
+\userhost\@value{postfix}\localname\
 @end macro
-@end ifclear
 
 @copying
 Copyright @copyright{} 1999--2016 Free Software Foundation, Inc.
@@ -469,7 +438,7 @@ In November 2012, added Juergen Hoetzel's @file{tramp-adb.el}.
 
 @value{tramp} is initially configured to use the @command{scp} program
 to connect to the remote host.  Just type @kbd{C-x C-f} and then enter
-file name @file{@trampfn{, user, host, /path/to.file}}.  For details,
+file name @file{@trampf{user@@host,/path/to.file}}.  For details,
 see @xref{Default Method}.
 
 For problems related to the behavior of remote shell, see @ref{Remote
@@ -877,7 +846,7 @@ authorization, @value{tramp} provides for an extended syntax in
 percent symbol, and domain is the windows domain name).  An example:
 
 @example
-@trampfn{smb, daniel%BIZARRE, melancholia, /daniel$$/.emacs}
+@trampfn{smb,daniel%BIZARRE@@melancholia,/daniel$$/.emacs}
 @end example
 
 where user @code{daniel} connects as a domain user to the SMB host
@@ -889,7 +858,7 @@ substitute the domain name with the name of the local host in
 UPPERCASE as shown here:
 
 @example
-@trampfn{smb, daniel%MELANCHOLIA, melancholia, /daniel$$/.emacs}
+@trampfn{smb,daniel%MELANCHOLIA@@melancholia,/daniel$$/.emacs}
 @end example
 
 where user @code{daniel} connects as local user to the SMB host
@@ -932,7 +901,7 @@ Emacs.
 
 @value{tramp} does not require a host name part of the remote file
 name when a single Android device is connected to @command{adb}.
-@value{tramp} instead uses @file{@trampfn{adb, , ,}} as the default
+@value{tramp} instead uses @file{@trampfn{adb,,}} as the default
 name.  @command{adb devices} shows available host names.
 
 @option{adb} method normally does not need user name to authenticate
@@ -974,7 +943,7 @@ D-Bus, dbus}.
 This method is for connecting to remote hosts with the Apple Filing
 Protocol for accessing files on Mac OS X volumes.  @value{tramp} access
 syntax requires a leading volume (share) name, for example:
-@file{@trampfn{afp, user, host, /volume}}.
+@file{@trampfn{afp,user@@host,/volume}}.
 
 @item @option{dav}
 @item @option{davs}
@@ -1138,7 +1107,7 @@ access and it has the most reasonable security protocols, use
 @file{/etc/motd} file on the otherhost:
 
 @example
-@kbd{C-x C-f @trampfn{ssh, root, otherhost,/etc/motd} @key{RET}}
+@kbd{C-x C-f @trampfn{ssh,root@@otherhost,/etc/motd} @key{RET}}
 @end example
 
 If @option{ssh} is unavailable for whatever reason, look for other
@@ -1149,7 +1118,7 @@ For editing local files as @option{su} or @option{sudo} methods, try
 the shortened syntax of @samp{root}:
 
 @example
-@kbd{C-x C-f @trampfn{su, , , /etc/motd} @key{RET}}
+@kbd{C-x C-f @trampfn{su,,/etc/motd} @key{RET}}
 @end example
 
 For editing large files, @option{scp} is faster than @option{ssh}.
@@ -1222,7 +1191,7 @@ and default host can be overridden as follows:
       tramp-default-host "target")
 @end lisp
 
-With both defaults set, @samp{@trampfn{ssh, , ,}} will connect
+With both defaults set, @samp{@trampfn{ssh,,}} will connect
 @value{tramp} to John's home directory on target.
 
 @strong{Note} @samp{/::} won't work, because @samp{/:} is the prefix
@@ -1275,7 +1244,7 @@ user @samp{bird} to reach remote hosts outside the local domain:
 
 @lisp
 (add-to-list 'tramp-default-proxies-alist
-             '("\\." nil "@trampfn{ssh, bird, bastion.your.domain,}"))
+             '("\\." nil "@trampfn{ssh,bird@@bastion.your.domain,}"))
 (add-to-list 'tramp-default-proxies-alist
              '("\\.your\\.domain\\'" nil nil))
 @end lisp
@@ -1291,7 +1260,7 @@ connect to @samp{bastion.your.domain}, then:
 (add-to-list 'tramp-default-proxies-alist
              '("\\`bastion\\.your\\.domain\\'"
                "\\`bird\\'"
-               "@trampfn{ssh, , jump.your.domain,}"))
+               "@trampfn{ssh,jump.your.domain,}"))
 @end lisp
 
 @var{proxy} can take patterns @code{%h} or @code{%u} for @var{host} or
@@ -1303,10 +1272,10 @@ access, then use this alist entry:
 
 @lisp
 (add-to-list 'tramp-default-proxies-alist
-             '("\\.your\\.domain\\'" "\\`root\\'" "@trampfn{ssh, , %h,}"))
+             '("\\.your\\.domain\\'" "\\`root\\'" "@trampfn{ssh,%h,}"))
 @end lisp
 
-Opening @file{@trampfn{sudo, , randomhost.your.domain,}} first
+Opening @file{@trampfn{sudo,randomhost.your.domain,}} first
 connects to @samp{randomhost.your.domain} via @code{ssh} under your
 account name, and then perform @code{sudo -u root} on that host.
 
@@ -1322,7 +1291,7 @@ local one, first connect via @command{ssh}, and then apply
 
 @lisp
 (add-to-list 'tramp-default-proxies-alist
-             '(nil "\\`root\\'" "@trampfn{ssh, , %h,}"))
+             '(nil "\\`root\\'" "@trampfn{ssh,%h,}"))
 (add-to-list 'tramp-default-proxies-alist
              '((regexp-quote (system-name)) nil nil))
 @end lisp
@@ -1346,7 +1315,7 @@ discussion of ethical issues.}  Then the configuration is:
 @lisp
 (add-to-list 'tramp-default-proxies-alist
              '("\\`host\\.other\\.domain\\'" nil
-             "@trampfn{tunnel, , proxy.your.domain#3128,}"))
+             "@trampfn{tunnel,proxy.your.domain#3128,}"))
 @end lisp
 
 Gateway methods in a multiple hop chain can be declared only as the first hop.
@@ -1596,8 +1565,7 @@ cases, two different connections may result in the same persistent
 information.  For example, connecting to a host using @command{ssh} and
 connecting to the same host through @code{sshd} on port 3001.  Both
 access methods result in nearly identical persistent specifications
-@file{@trampfn{ssh, , localhost,}} and @file{@trampfn{ssh, ,
-localhost#3001,}}.
+@file{@trampfn{ssh,localhost,}} and @file{@trampfn{ssh,localhost#3001,}}.
 
 Changing host names could avoid duplicates.  One way is to add a
 @option{Host} section in @file{~/.ssh/config} (@pxref{Frequently Asked
@@ -1629,10 +1597,10 @@ remote shell:
 
 @lisp
 (add-to-list 'tramp-connection-properties
-             (list (regexp-quote "@trampfn{ssh, user, randomhost.your.domain,}")
+             (list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
                    "remote-shell" "/bin/ksh"))
 (add-to-list 'tramp-connection-properties
-             (list (regexp-quote "@trampfn{ssh, user, randomhost.your.domain,}")
+             (list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
                    "remote-shell-login" '("-")))
 @end lisp
 
@@ -1648,7 +1616,7 @@ special property @samp{busybox}.  For example:
 
 @lisp
 (add-to-list 'tramp-connection-properties
-             (list (regexp-quote "@trampfn{ssh, user, randomhost.your.domain,}")
+             (list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
                    "busybox" t))
 @end lisp
 
@@ -1949,8 +1917,8 @@ directory for temporary files:
 @end lisp
 
 @noindent
-Open a remote connection with the command @kbd{C-x C-f @trampfn{ssh, ,
-192.168.0.26#2222, }}, where @command{sshd} is listening on port
+Open a remote connection with the command @kbd{C-x C-f
+@trampfn{ssh,192.168.0.26#2222,}}, where @command{sshd} is listening on port
 @samp{2222}.
 
 To add a corresponding entry to the @file{~/.ssh/config} file
@@ -1974,7 +1942,7 @@ the previous example, fix the connection properties as follows:
 
 @noindent
 Open a remote connection with a more concise command @kbd{C-x C-f
-@trampfn{ssh, , android, }}.
+@trampfn{ssh,android,}}.
 
 
 @node Auto-save and Backup
@@ -1992,7 +1960,7 @@ by default writes backup files to the same directory as the original
 files unless changed to another location, such as
 @file{~/.emacs.d/backups/}.  Such a directory will also be used by
 default by @value{tramp} when using, say, a restricted file
-@file{@trampfn{su, root, localhost, /etc/secretfile}}.  The backup
+@file{@trampfn{su,root@@localhost,/etc/secretfile}}.  The backup
 file of the secretfile is now owned by the user logged in from tramp
 and not root.
 
@@ -2042,9 +2010,9 @@ Example:
 @end lisp
 
 @noindent
-The backup file name of @file{@trampfn{su, root, localhost,
-/etc/secretfile}} would be @file{@trampfn{su, root, localhost,
-~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile~}}
+The backup file name of
+@file{@trampfn{su,root@@localhost,/etc/secretfile}} would be
+@file{@trampfn{su,root@@localhost,~/.emacs.d/backups/!su:root@@localhost:!etc!secretfile~}}.
 
 Just as for backup files, similar issues of file naming affect
 auto-saving @value{tramp} files.  Auto-saved files are saved in the
@@ -2143,7 +2111,7 @@ is a feature of Emacs that may cause missed prompts when using
 @cindex file name syntax
 @cindex file name examples
 
-@file{@trampfn{, , host, localfilename}}
+@file{@trampf{host,localfilename}}
 opens file @var{localfilename} on the remote host @var{host}, using
 the default method.  @xref{Default Method}.
 
@@ -2169,21 +2137,21 @@ For the file @file{/etc/squid.conf} on the host @code{melancholia}.
 
 @end table
 
-@var{host} can take IPv4 or IPv6 address, as in @file{@trampfn{, ,
-127.0.0.1, .emacs}} or @file{@trampfn{, ,
-@value{ipv6prefix}::1@value{ipv6postfix}, .emacs}}.  For syntactical
-reasons, IPv6 addresses must be embedded in square brackets
-@file{@value{ipv6prefix}} and @file{@value{ipv6postfix}}.
+@var{host} can take IPv4 or IPv6 address, as in
+@file{@trampf{127.0.0.1,.emacs}} or
+@file{@trampf{@value{ipv6prefix}::1@value{ipv6postfix},.emacs}}.
+For syntactical reasons, IPv6 addresses must be embedded in square
+brackets @file{@value{ipv6prefix}} and @file{@value{ipv6postfix}}.
 
 By default, @value{tramp} will use the current local user name as the
 remote user name for log in to the remote host.  Specifying a different
 name using the proper syntax will override this default behavior:
 
 @example
-@trampfn{, user, host, path/to.file}
+@trampf{user@@host,path/to.file}
 @end example
 
-@file{@trampfn{, daniel, melancholia, .emacs}} is for file
+@file{@trampf{daniel@@melancholia,.emacs}} is for file
 @file{.emacs} in @code{daniel}'s home directory on the host,
 @code{melancholia}.
 
@@ -2197,15 +2165,14 @@ change.
 
 To connect to the host @code{melancholia} as @code{daniel}, using
 @option{ssh} method for @file{.emacs} in @code{daniel}'s home
-directory, the full specification is: @file{@trampfn{ssh, daniel,
-melancholia, .emacs}}.
+directory, the full specification is:
+@file{@trampfn{ssh,daniel@@melancholia,.emacs}}.
 
 A remote file name containing a host name, which is the same string as
 a method name, is not allowed.
 
 For specifying port numbers, affix @file{#<port>} to the host
-name.  For example: @file{@trampfn{ssh, daniel, melancholia#42,
-.emacs}}.
+name.  For example: @file{@trampfn{ssh,daniel@@melancholia#42,.emacs}}.
 
 
 @node File name completion
@@ -2224,7 +2191,7 @@ For example, type @kbd{C-x C-f @value{prefix}t @key{TAB}},
 @value{tramp} completion choices show up as
 
 @example
-@c @multitable {@trampfn{telnet, , melancholia.danann.net,}} {@trampfn{telnet, , 192.168.0.1,}}
+@c @multitable {@trampfn{telnet,melancholia.danann.net,}} {@trampfn{telnet,192.168.0.1,}}
 @multitable @columnfractions .5 .5
 @item @value{prefixhop}telnet@value{postfixhop} @tab tmp/
 @item @value{prefixhop}toto@value{postfix} @tab
@@ -2244,10 +2211,11 @@ shows host names @value{tramp} from @file{/etc/hosts} file, for example.
 
 @example
 @multitable @columnfractions .5 .5
-@c @multitable {@trampfn{telnet, , melancholia.danann.net,}} {@trampfn{telnet, , 192.168.0.1,}}
-@item @trampfn{telnet, , 127.0.0.1,} @tab @trampfn{telnet, , 192.168.0.1,}
-@item @trampfn{telnet, , @value{ipv6prefix}::1@value{ipv6postfix},} @tab @trampfn{telnet, , localhost,}
-@item @trampfn{telnet, , melancholia.danann.net,} @tab @trampfn{telnet, , melancholia,}
+@c @multitable {@trampfn{telnet,melancholia.danann.net,}} {@trampfn{telnet,192.168.0.1,}}
+@item @trampfn{telnet,127.0.0.1,} @tab @trampfn{telnet,192.168.0.1,}
+@c @item @trampfn{telnet,@value{ipv6prefix}::1@value{ipv6postfix},} @tab @trampfn{telnet,localhost,}
+@item @value{prefix}telnet@value{postfixhop}@value{ipv6prefix}::1@value{ipv6postfix}@value{postfix} @tab @trampfn{telnet,localhost,}
+@item @trampfn{telnet,melancholia.danann.net,} @tab @trampfn{telnet,melancholia,}
 @end multitable
 @end example
 
@@ -2274,13 +2242,13 @@ stands for the default behavior.
 Example:
 
 @example
-@kbd{C-x C-f @trampfn{telnet, , melancholia, /usr/local/bin//etc} @key{TAB}}
-     @print{} @trampfn{telnet, , melancholia, /etc}
+@kbd{C-x C-f @trampfn{telnet,melancholia,/usr/local/bin//etc} @key{TAB}}
+     @print{} @trampfn{telnet,melancholia,/etc}
 
-@kbd{C-x C-f @trampfn{telnet, , melancholia, //etc} @key{TAB}}
+@kbd{C-x C-f @trampfn{telnet,melancholia,//etc} @key{TAB}}
      @print{} /etc
 
-@kbd{C-x C-f @trampfn{telnet, , melancholia, /usr/local/bin///etc} @key{TAB}}
+@kbd{C-x C-f @trampfn{telnet,melancholia,/usr/local/bin///etc} @key{TAB}}
      @print{} /etc
 @end example
 
@@ -2314,8 +2282,7 @@ remote host name and file name.  For example, hopping over a single
 proxy @samp{bird@@bastion} to a remote file on @samp{you@@remotehost}:
 
 @example
-@c @kbd{C-x C-f @trampfn{ssh@value{postfixhop}bird@@bastion|ssh, you,
-@c remotehost, /path}}
+@c @kbd{C-x C-f @trampfn{ssh@value{postfixhop}bird@@bastion|ssh,you,remotehost,/path}}
 @kbd{C-x C-f @value{prefix}ssh@value{postfixhop}bird@@bastion|ssh@value{postfixhop}you@@remotehost@value{postfix}/path}
 @end example
 
@@ -2324,8 +2291,8 @@ Proxies can take patterns @code{%h} or @code{%u}.
 @value{tramp} adds the ad-hoc definitions on the fly to
 @code{tramp-default-proxies-alist} and is available for re-use during
 that Emacs session.  Subsequent @value{tramp} connections to the same
-remote host can then use the shortcut form: @samp{@trampfn{ssh, you,
-remotehost, /path}}.
+remote host can then use the shortcut form:
+@samp{@trampfn{ssh,you@@remotehost,/path}}.
 
 @defopt tramp-save-ad-hoc-proxies
 @vindex tramp-save-ad-hoc-proxies
@@ -2478,7 +2445,7 @@ on remote hosts and displays output in buffers on the local
 host.  Example:
 
 @example
-@kbd{C-x C-f @trampfn{sudo, , , } @key{RET}}
+@kbd{C-x C-f @trampfn{sudo,,} @key{RET}}
 @kbd{M-! tail -f /var/log/syslog.log & @key{RET}}
 @end example
 
@@ -2498,14 +2465,14 @@ You must add the module @code{eshell-tramp} to
 @kbd{M-x eshell} on a remote host:
 
 @example
-@b{~ $} cd @trampfn{sudo, , , /etc} @key{RET}
-@b{@trampfn{sudo, root, host, /etc} $} hostname @key{RET}
+@b{~ $} cd @trampfn{sudo,,/etc} @key{RET}
+@b{@trampfn{sudo,root@@host,/etc} $} hostname @key{RET}
 host
-@b{@trampfn{sudo, root, host, /etc} $} id @key{RET}
+@b{@trampfn{sudo,root@@host,/etc} $} id @key{RET}
 uid=0(root) gid=0(root) groups=0(root)
-@b{@trampfn{sudo, root, host, /etc} $} find-file shadow @key{RET}
+@b{@trampfn{sudo,root@@host,/etc} $} find-file shadow @key{RET}
 #<buffer shadow>
-@b{@trampfn{sudo, root, host, /etc} $}
+@b{@trampfn{sudo,root@@host,/etc} $}
 @end example
 
 @code{eshell} in Emacs 23.2 added custom @code{su} and @code{sudo}
@@ -2515,16 +2482,16 @@ commands that set the default directory correctly for the
 (@pxref{Multi-hops}):
 
 @example
-@b{~ $} cd @trampfn{ssh, user, remotehost, /etc} @key{RET}
-@b{@trampfn{ssh, user, remotehost, /etc} $} find-file shadow @key{RET}
-File is not readable: @trampfn{ssh, user, remotehost, /etc/shadow}
-@b{@trampfn{ssh, user, remotehost, /etc} $} sudo find-file shadow @key{RET}
+@b{~ $} cd @trampfn{ssh,user@@remotehost,/etc} @key{RET}
+@b{@trampfn{ssh,user@@remotehost,/etc} $} find-file shadow @key{RET}
+File is not readable: @trampfn{ssh,user@@remotehost,/etc/shadow}
+@b{@trampfn{ssh,user@@remotehost,/etc} $} sudo find-file shadow @key{RET}
 #<buffer shadow>
 
-@b{@trampfn{ssh, user, remotehost, /etc} $} su - @key{RET}
-@b{@trampfn{su, root, remotehost, /root} $} id @key{RET}
+@b{@trampfn{ssh,user@@remotehost,/etc} $} su - @key{RET}
+@b{@trampfn{su,root@@remotehost,/root} $} id @key{RET}
 uid=0(root) gid=0(root) groups=0(root)
-@b{@trampfn{su, root, remotehost, /root} $}
+@b{@trampfn{su,root@@remotehost,/root} $}
 @end example
 
 
@@ -2543,11 +2510,11 @@ with a remote file name:
 
 @example
 @kbd{M-x gdb @key{RET}}
-@b{Run gdb (like this):} gdb --annotate=3 @trampfn{ssh, , host, ~/myprog} @key{RET}
+@b{Run gdb (like this):} gdb --annotate=3 @trampfn{ssh,host,~/myprog} @key{RET}
 @end example
 
 Relative file names are based on the remote default directory.  When
-@file{myprog.pl} exists in @file{@trampfn{ssh, , host, /home/user}},
+@file{myprog.pl} exists in @file{@trampfn{ssh,host,/home/user}},
 valid calls include:
 
 @example
@@ -2602,8 +2569,9 @@ To open @command{powershell} as a remote shell, use this:
 This command flushes all connection related objects.  @option{vec} is
 the internal representation of a remote connection.  When called
 interactively, this command lists active remote connections in the
-minibuffer.  Each connection is of the format @file{@trampfn{method,
-user, host, }}.  Flushing remote connections also cleans the password
+minibuffer.  Each connection is of the format
+@file{@trampfn{method,user@@host,}}.  Flushing remote connections also
+cleans the password
 cache (@pxref{Password handling}), file cache, connection cache
 (@pxref{Connection caching}), and connection buffers.
 @end deffn
@@ -3058,7 +3026,7 @@ HISTFILE=/dev/null
 How to shorten long file names when typing in @value{tramp}?
 
 Adapt several of these approaches to reduce typing.  If the full name
-is @file{@trampfn{ssh, news, news.my.domain, /opt/news/etc}}, then:
+is @file{@trampfn{ssh,news@@news.my.domain,/opt/news/etc}}, then:
 
 @enumerate
 
@@ -3073,11 +3041,11 @@ You can define default methods and user names for hosts,
       tramp-default-user "news")
 @end lisp
 
-The reduced typing: @kbd{C-x C-f @trampfn{, , news.my.domain, /opt/news/etc}}.
+The reduced typing: @kbd{C-x C-f @trampf{news.my.domain,/opt/news/etc}}.
 
 @strong{Note} that there are some useful shortcuts already.  Accessing
 your local host as @samp{root} user, is possible just by @kbd{C-x C-f
-@trampfn{su, , ,}}.
+@trampfn{su,,}}.
 
 @item
 Use configuration options of the access method:
@@ -3092,7 +3060,7 @@ Host xy
      User news
 @end example
 
-The reduced typing: @kbd{C-x C-f @trampfn{ssh, , xy, /opt/news/etc}}.
+The reduced typing: @kbd{C-x C-f @trampfn{ssh,xy,/opt/news/etc}}.
 
 Depending on the number of files in the directories, host names
 completion can further reduce key strokes: @kbd{C-x C-f
@@ -3106,7 +3074,7 @@ the minibuffer.  Environment variables are set either outside Emacs or
 inside Emacs with Lisp:
 
 @lisp
-(setenv "xy" "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}")
+(setenv "xy" "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}")
 @end lisp
 
 The reduced typing: @kbd{C-x C-f $xy @key{RET}}.
@@ -3127,7 +3095,7 @@ Redefine another key sequence in Emacs for @kbd{C-x C-f}:
    (find-file
     (read-file-name
      "Find Tramp file: "
-     "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))))
+     "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))))
 @end lisp
 
 Simply typing @kbd{C-x C-y} would prepare minibuffer editing of file
@@ -3144,7 +3112,7 @@ Abbreviation list expansion can be used to reduce typing long file names:
 @lisp
 (add-to-list
  'directory-abbrev-alist
- '("^/xy" . "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))
+ '("^/xy" . "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))
 @end lisp
 
 The reduced typing: @kbd{C-x C-f /xy @key{RET}}.
@@ -3161,7 +3129,7 @@ minibuffer:
 
 @lisp
 (define-abbrev-table 'my-tramp-abbrev-table
-  '(("xy" "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}")))
+  '(("xy" "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}")))
 
 (add-hook
  'minibuffer-setup-hook
@@ -3221,7 +3189,7 @@ directory to the cache:
 @lisp
 (eval-after-load "filecache"
   '(file-cache-add-directory
-    "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))
+    "@trampfn{ssh,news@@news.my.domain,/opt/news/etc/}"))
 @end lisp
 
 Then use directory completion in the minibuffer with @kbd{C-x C-f
@@ -3266,11 +3234,10 @@ Why saved multi-hop file names do not work in a new Emacs session?
 When saving ad-hoc multi-hop @value{tramp} file names (@pxref{Ad-hoc
 multi-hops}) via bookmarks, recent files, filecache, bbdb, or another
 package, use the full ad-hoc file name including all hops, like
-@file{@trampfn{ssh, bird, bastion|ssh@value{postfixhop}news.my.domain,
-/opt/news/etc}}.
+@file{@trampfn{ssh,bird@@bastion|ssh@value{postfixhop}news.my.domain,/opt/news/etc}}.
 
 Alternatively, when saving abbreviated multi-hop file names
-@file{@trampfn{ssh, news, news.my.domain, /opt/news/etc}}, the custom
+@file{@trampfn{ssh,news@@news.my.domain,/opt/news/etc}}, the custom
 option @code{tramp-save-ad-hoc-proxies} must be set non-@code{nil}
 value.
 
@@ -3302,7 +3269,7 @@ location.
 Then start Emacs Client from the command line:
 
 @example
-emacsclient @trampfn{ssh, user, host, /file/to/edit}
+emacsclient @trampfn{ssh,user@@host,/file/to/edit}
 @end example
 
 @code{user} and @code{host} refer to the local host.
@@ -3312,7 +3279,7 @@ script @file{emacsclient.sh}:
 
 @example
 #!/bin/sh
-emacsclient @trampfn{ssh, $(whoami), $(hostname --fqdn), $1}
+emacsclient @trampfn{ssh,$(whoami)@@$(hostname --fqdn),$1}
 @end example
 
 Then change the environment variable @env{EDITOR} to point to the