Home Explore Blog CI



neovim

17th chunk of `runtime/doc/starting.txt`
3626d32dc04270adb9c424da163b84e48a76e20656093e250000000100000fa3
 AND WRITING				*shada-read-write*

Two commands can be used to read and write the ShaDa file manually.  This
can be used to exchange registers between two running Vim programs: First
type ":wsh" in one and then ":rsh" in the other.  Note that if the register
already contained something, then ":rsh!" would be required.  Also note,
however, that this means everything will be overwritten with information from
the first Vim, including the command line history, etc.

The ShaDa file itself can be edited by hand too, although we suggest you
start with an existing one to get the format right.  You need to understand
MessagePack (or, more likely, find software that is able to use it) format to
do this.  This can be useful in order to create a second file, say
"~/.my.shada", which could contain certain settings that you always want when
you first start Nvim.  For example, you can preload registers with
particular data, or put certain commands in the command line history.  A line
in your |config| file like >
	:rshada! ~/.my.shada
can be used to load this information.  You could even have different ShaDa
files for different types of files (e.g., C code) and load them based on the
file name, using the ":autocmd" command (see |:autocmd|).  More information on
ShaDa file format is contained in |shada-format| section.

					  *E136* *E929* *shada-error-handling*
Some errors make Nvim leave temporary file named `{basename}.tmp.X` (X is
any free letter from `a` to `z`) while normally it will create this file,
write to it and then rename `{basename}.tmp.X` to `{basename}`. Such errors
include:

- Errors which make Nvim think that the file being read is not a ShaDa
  file at all:
  non-ShaDa files are not overwritten for safety reasons to avoid accidentally
  destroying an unrelated file.  This could happen e.g. when typing "nvim -i
  file" in place of "nvim -R file" (yes, somebody did that at least with Vim).
  Such errors are listed at |shada-critical-contents-errors|.
- If writing to the temporary file failed: e.g. because of the insufficient
  space left.
- If renaming file failed: e.g. because of insufficient permissions.
- If target ShaDa file has different from the Nvim instance's owners (user
  and group) and changing them failed.  Unix-specific, applies only when
  Nvim was launched from root.

Do not forget to remove the temporary file or replace the target file with
temporary one after getting one of the above errors or all attempts to create
a ShaDa file may fail with |E929|.  If you got one of them when using
|:wshada| (and not when exiting Nvim: i.e. when you have Nvim session
running) you have additional options:

- First thing which you should consider if you got any error, except failure
  to write to the temporary file: remove existing file and replace it with the
  temporary file.  Do it even if you have running Nvim instance.
- Fix the permissions and/or file ownership, free some space and attempt to
  write again.  Do not remove the existing file.
- Use |:wshada| with bang.  Does not help in case of permission error.  If
  target file was actually the ShaDa file some information may be lost in this
  case.  To make the matters slightly better use |:rshada| prior to writing,
  but this still will loose buffer-local marks and change list entries for any
  file which is not opened in the current Nvim instance.
- Remove the target file from shell and use |:wshada|.  Consequences are not
  different from using |:wshada| with bang, but "rm -f" works in some cases
  when you don't have write permissions.

						    *:rsh* *:rshada* *E886*
:rsh[ada][!] [file]	Read from ShaDa file [file] (default: see above).
			If [!] is given, then any information that is
			already set (registers, marks, |v:oldfiles|, etc.)
			will be overwritten.

						    *:wsh* *:wshada* *E137*
:wsh[ada][!] [file]	Write to ShaDa file [file] (default: see above).
			The information in the file is first read in to make
			a merge between old and new info.  When [!]

Title: ShaDa File Read/Write Details and Error Handling
Summary
This section elaborates on manually reading and writing ShaDa files, including loading specific settings. It provides information on potential errors (E136, E929) that may occur during ShaDa file creation, such as problems detecting the ShaDa file, insufficient space, permission issues, or ownership conflicts. It gives advice on addressing these errors, like removing the temporary file, fixing permissions, or using commands with a bang (!). It also documents the :rsh[ada] and :wsh[ada] commands with their options, covering reading from and writing to ShaDa files.