summaryrefslogtreecommitdiffstats
path: root/runtime/doc/various.txt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc/various.txt')
-rw-r--r--runtime/doc/various.txt801
1 files changed, 801 insertions, 0 deletions
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
new file mode 100644
index 0000000..0aa5c74
--- /dev/null
+++ b/runtime/doc/various.txt
@@ -0,0 +1,801 @@
+*various.txt* For Vim version 9.1. Last change: 2023 Sep 27
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+
+
+Various commands *various*
+
+1. Various commands |various-cmds|
+2. Using Vim like less or more |less|
+
+==============================================================================
+1. Various commands *various-cmds*
+
+ *CTRL-L*
+CTRL-L Clear and redraw the screen. The redraw may happen
+ later, after processing typeahead.
+
+ *:redr* *:redraw*
+:redr[aw][!] Redraw the screen right now. When ! is included it is
+ cleared first.
+ Useful to update the screen halfway executing a script
+ or function. Also when halfway a mapping and
+ 'lazyredraw' is set.
+
+ *:redraws* *:redrawstatus*
+:redraws[tatus][!] Redraw the status line of the current window. When !
+ is included all status lines are redrawn.
+ Useful to update the status line(s) when 'statusline'
+ includes an item that doesn't cause automatic
+ updating.
+ If the command line is being edited the redraw is
+ postponed until later.
+
+ *:redrawt* *:redrawtabline*
+:redrawt[abline] Redraw the tabline. Useful to update the tabline when
+ 'tabline' includes an item that doesn't trigger
+ automatic updating.
+
+ *N<Del>*
+<Del> When entering a number: Remove the last digit.
+ Note: if you like to use <BS> for this, add this
+ mapping to your .vimrc: >
+ :map CTRL-V <BS> CTRL-V <Del>
+< See |:fixdel| if your <Del> key does not do what you
+ want.
+
+:as[cii] or *ga* *:as* *:ascii*
+ga Print the ascii value of the character under the
+ cursor in decimal, hexadecimal and octal.
+ Mnemonic: Get Ascii value.
+
+ For example, when the cursor is on a 'R':
+ <R> 82, Hex 52, Octal 122 ~
+ When the character is a non-standard ASCII character,
+ but printable according to the 'isprint' option, the
+ non-printable version is also given.
+
+ When the character is larger than 127, the <M-x> form
+ is also printed. For example:
+ <~A> <M-^A> 129, Hex 81, Octal 201 ~
+ <p> <|~> <M-~> 254, Hex fe, Octal 376 ~
+ (where <p> is a special character)
+
+ The <Nul> character in a file is stored internally as
+ <NL>, but it will be shown as:
+ <^@> 0, Hex 00, Octal 000 ~
+
+ If the character has composing characters these are
+ also shown. The value of 'maxcombine' doesn't matter.
+
+ If the character can be inserted as a digraph, also
+ output the two characters that can be used to create
+ the character:
+ <ö> 246, Hex 00f6, Oct 366, Digr o: ~
+ This shows you can type CTRL-K o : to insert ö.
+
+ *g8*
+g8 Print the hex values of the bytes used in the
+ character under the cursor, assuming it is in |UTF-8|
+ encoding. This also shows composing characters. The
+ value of 'maxcombine' doesn't matter.
+ Example of a character with two composing characters:
+ e0 b8 81 + e0 b8 b9 + e0 b9 89 ~
+
+ *8g8*
+8g8 Find an illegal UTF-8 byte sequence at or after the
+ cursor. This works in two situations:
+ 1. when 'encoding' is any 8-bit encoding
+ 2. when 'encoding' is "utf-8" and 'fileencoding' is
+ any 8-bit encoding
+ Thus it can be used when editing a file that was
+ supposed to be UTF-8 but was read as if it is an 8-bit
+ encoding because it contains illegal bytes.
+ Does not wrap around the end of the file.
+ Note that when the cursor is on an illegal byte or the
+ cursor is halfway a multibyte character the command
+ won't move the cursor.
+
+ *:p* *:pr* *:print* *E749*
+:[range]p[rint] [flags]
+ Print [range] lines (default current line).
+ Note: If you are looking for a way to print your text
+ on paper see |:hardcopy|. In the GUI you can use the
+ File.Print menu entry.
+ See |ex-flags| for [flags].
+ The |:filter| command can be used to only show lines
+ matching a pattern.
+
+:[range]p[rint] {count} [flags]
+ Print {count} lines, starting with [range] (default
+ current line |cmdline-ranges|).
+ See |ex-flags| for [flags].
+
+ *:P* *:Print*
+:[range]P[rint] [count] [flags]
+ Just as ":print". Was apparently added to Vi for
+ people that keep the shift key pressed too long...
+ This command is not supported in |Vim9| script.
+ Note: A user command can overrule this command.
+ See |ex-flags| for [flags].
+
+ *:l* *:list*
+:[range]l[ist] [count] [flags]
+ Same as :print, but display unprintable characters
+ with '^' and put $ after the line. This can be
+ further changed with the 'listchars' option.
+ See |ex-flags| for [flags].
+
+ *:nu* *:number*
+:[range]nu[mber] [count] [flags]
+ Same as :print, but precede each line with its line
+ number. (See also 'highlight' and 'numberwidth'
+ option).
+ See |ex-flags| for [flags].
+
+ *:#*
+:[range]# [count] [flags]
+ synonym for :number.
+
+ *:#!*
+:#!{anything} Ignored, so that you can start a Vim script with: >
+ #!vim -S
+ echo "this is a Vim script"
+ quit
+<
+ *:z* *E144*
+:[range]z[+-^.=][count] Display several lines of text surrounding the line
+ specified with [range], or around the current line
+ if there is no [range].
+
+ If there is a [count], that's how many lines you'll
+ see; if there is no [count] and only one window then
+ twice the value of the 'scroll' option is used,
+ otherwise the current window height minus 3 is used.
+ This is the value of "scr" in the table below.
+
+ If there is a [count] the 'window' option is set to
+ its value.
+
+ :z can be used either alone or followed by any of
+ several marks. These have the following effect:
+
+ mark first line last line new cursor line ~
+ ---- ---------- --------- ------------
+ + current line 1 scr forward 1 scr forward
+ - 1 scr back current line current line
+ ^ 2 scr back 1 scr back 1 scr back
+ . 1/2 scr back 1/2 scr fwd 1/2 scr fwd
+ = 1/2 scr back 1/2 scr fwd current line
+
+ Specifying no mark at all is the same as "+".
+ If the mark is "=", a line of dashes is printed
+ around the current line.
+
+ *:z!*
+:[range]z![+-^.=][count]
+ Like ":z", but when [count] is not specified, it
+ defaults to the Vim window height minus one.
+
+:[range]z[!]#[+-^.=][count] *:z#*
+ Like ":z" or ":z!", but number the lines.
+
+ *:=*
+:= [flags] Print the last line number.
+ See |ex-flags| for [flags].
+
+:{range}= [flags] Prints the last line number in {range}. For example,
+ this prints the current line number: >
+ :.=
+< See |ex-flags| for [flags].
+
+:norm[al][!] {commands} *:norm* *:normal*
+ Execute Normal mode commands {commands}. This makes
+ it possible to execute Normal mode commands typed on
+ the command-line. {commands} are executed like they
+ are typed. For undo all commands are undone together.
+ Execution stops when an error is encountered.
+
+ If the [!] is given, mappings will not be used.
+ Without it, when this command is called from a
+ non-remappable mapping (|:noremap|), the argument can
+ be mapped anyway.
+
+ {commands} should be a complete command. If
+ {commands} does not finish a command, the last one
+ will be aborted as if <Esc> or <C-C> was typed.
+ This implies that an insert command must be completed
+ (to start Insert mode, see |:startinsert|). A ":"
+ command must be completed as well. And you can't use
+ "Q" or "gQ" to start Ex mode.
+
+ The display is not updated while ":normal" is busy.
+
+ {commands} cannot start with a space. Put a count of
+ 1 (one) before it, "1 " is one space.
+
+ The 'insertmode' option is ignored for {commands}.
+
+ This command cannot be followed by another command,
+ since any '|' is considered part of the command.
+
+ This command can be used recursively, but the depth is
+ limited by 'maxmapdepth'.
+
+ An alternative is to use |:execute|, which uses an
+ expression as argument. This allows the use of
+ printable characters to represent special characters.
+
+ Example: >
+ :exe "normal \<c-w>\<c-w>"
+
+:{range}norm[al][!] {commands} *:normal-range*
+ Execute Normal mode commands {commands} for each line
+ in the {range}. Before executing the {commands}, the
+ cursor is positioned in the first column of the range,
+ for each line. Otherwise it's the same as the
+ ":normal" command without a range.
+
+ *:sh* *:shell* *E371*
+:sh[ell] This command starts a shell. When the shell exits
+ (after the "exit" command) you return to Vim. The
+ name for the shell command comes from 'shell' option.
+ *E360*
+ Note: This doesn't work when Vim on the Amiga was
+ started in QuickFix mode from a compiler, because the
+ compiler will have set stdin to a non-interactive
+ mode.
+
+ *:!cmd* *:!*
+:!{cmd} Execute {cmd} with the shell. See also the 'shell'
+ and 'shelltype' option.
+ *E34*
+ Any '!' in {cmd} is replaced with the previous
+ external command (see also 'cpoptions'). But not when
+ there is a backslash before the '!', then that
+ backslash is removed. Example: ":!ls" followed by
+ ":!echo ! \! \\!" executes "echo ls ! \!".
+
+ A '|' in {cmd} is passed to the shell, you cannot use
+ it to append a Vim command. See |:bar|.
+
+ If {cmd} contains "%" it is expanded to the current
+ file name, "#" is expanded to the alternate file name.
+ Special characters in the file name are not escaped,
+ use quotes to avoid their special meaning: >
+ :!ls "%"
+< If the file name contains a "$" then single quotes
+ might work better, but this only works if the file
+ name does not contain a single quote: >
+ :!ls '%'
+< This should always work, but it's more typing: >
+ :exe "!ls " .. shellescape(expand("%"))
+< To get a literal "%" or "#" prepend it with a
+ backslash. For example, to list all files starting
+ with "%": >
+ :!ls \%*
+<
+ A newline character ends {cmd}, what follows is
+ interpreted as a following ":" command. However, if
+ there is a backslash before the newline it is removed
+ and {cmd} continues. It doesn't matter how many
+ backslashes are before the newline, only one is
+ removed.
+
+ On Unix the command normally runs in a non-interactive
+ shell. If you want an interactive shell to be used
+ (to use aliases) set 'shellcmdflag' to "-ic".
+ For Win32 also see |:!start|.
+
+ After the command has been executed, the timestamp and
+ size of the current file is checked |timestamp|.
+
+ Vim redraws the screen after the command is finished,
+ because it may have printed any text. This requires a
+ hit-enter prompt, so that you can read any messages.
+ To avoid this use: >
+ :silent !{cmd}
+< The screen is not redrawn then, thus you have to use
+ CTRL-L or ":redraw!" if the command did display
+ something. However, this depends on what the |t_ti|
+ and |t_te| termcap entries are set to.
+ Also see |shell-window|.
+
+ *:!!*
+:!! Repeat last ":!{cmd}".
+
+ *:ve* *:ver* *:version*
+:ve[rsion] Print the version number of the editor. If the
+ compiler used understands "__DATE__" the compilation
+ date is mentioned. Otherwise a fixed release-date is
+ shown.
+ The following lines contain information about which
+ features were enabled when Vim was compiled. When
+ there is a preceding '+', the feature is included,
+ when there is a '-' it is excluded. To change this,
+ you have to edit feature.h and recompile Vim.
+ To check for this in an expression, see |has()|.
+ Here is an overview of the features.
+ The first column shows the smallest version in which
+ they are included:
+ T tiny (always)
+ N normal
+ H huge
+ m manually enabled or depends on other features
+ - never, feature was removed
+ (none) system dependent
+ Thus if a feature is marked with "N", it is included
+ in the normal and huge versions of Vim.
+
+ *+feature-list*
+ *+acl* |ACL| support included
+ *+ARP* Amiga only: ARP support included
+H *+arabic* |Arabic| language support
+N *+autochdir* support 'autochdir' option
+T *+autocmd* |:autocmd|, automatic commands. Always enabled since
+ 8.0.1564
+H *+autoservername* Automatically enable |clientserver|
+m *+balloon_eval* |balloon-eval| support in the GUI. Included when
+ compiling with supported GUI (Motif, GTK, GUI) and
+ either Netbeans/Sun Workshop integration or |+eval|
+ feature.
+H *+balloon_eval_term* |balloon-eval| support in the terminal,
+ 'balloonevalterm'
+N *+browse* |:browse| command
+T *++builtin_terms* maximal terminals builtin |builtin-terms| Always
+ enabled since 9.0.0280
+N *+byte_offset* support for 'o' flag in 'statusline' option, "go"
+ and ":goto" commands.
+m *+channel* inter process communication |channel|
+T *+cindent* |'cindent'|, C indenting; Always enabled
+N *+clientserver* Unix and Win32: Remote invocation |clientserver|
+ *+clipboard* |clipboard| support compiled-in
+ *+clipboard_working* |clipboard| support compiled-in and working
+T *+cmdline_compl* command line completion |cmdline-completion|
+T *+cmdline_hist* command line history |cmdline-history|
+T *+cmdline_info* |'showcmd'| and |'ruler'|; Always enabled since
+ 9.0.0747
+T *+cmdwin* |cmdline-window| support; Always enabled since 9.0.0657
+T *+comments* |'comments'| support
+N *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc.
+N *+cryptv* encryption support |encryption|
+H *+cscope* |cscope| support
+T *+cursorbind* |'cursorbind'| support
+m *+cursorshape* |termcap-cursor-shape| support
+m *+debug* Compiled for debugging.
+N *+dialog_gui* Support for |:confirm| with GUI dialog.
+N *+dialog_con* Support for |:confirm| with console dialog.
+N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog.
+N *+diff* |vimdiff| and 'diff'
+N *+digraphs* |digraphs| *E196*
+ *+directx* Win32 GUI only: DirectX and |'renderoptions'|
+ *+dnd* Support for DnD into the "~ register |quote_~|.
+H *+emacs_tags* |emacs-tags| files
+N *+eval* expression evaluation |eval.txt|
+T *+ex_extra* always on now, used to be for Vim's extra Ex commands
+N *+extra_search* |'hlsearch'| and |'incsearch'| options.
+- *+farsi* Removed: |farsi| language
+T *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>| Always enabled since
+ 9.0.265
+N *+find_in_path* include file searches: |[I|, |:isearch|,
+ |CTRL-W_CTRL-I|, |:checkpath|, etc.
+N *+folding* |folding|
+ *+footer* |gui-footer|
+ *+fork* Unix only: |fork| shell commands
+T *+float* Floating point support Always enabled since 9.0.0491
+N *+gettext* message translations |multi-lang|
+- *+GUI_Athena* Unix only: Athena |GUI|
+ *+GUI_neXtaw* Unix only: neXtaw |GUI|
+ *+GUI_GTK* Unix only: GTK+ |GUI|
+ *+GUI_Motif* Unix only: Motif |GUI|
+ *+GUI_Photon* QNX only: Photon |GUI|
+m *+hangul_input* Hangul input support |hangul|
+ *+iconv* Compiled with the |iconv()| function
+ *+iconv/dyn* Likewise |iconv-dynamic| |/dyn|
+T *+insert_expand* |insert_expand| Insert mode completion
+m *+ipv6* Support for IPv6 networking |channel|
+m *+job* starting and stopping jobs |job|
+T *+jumplist* |jumplist|; Always enabled since 8.2.3795
+H *+keymap* |'keymap'|
+N *+lambda* |lambda| and |closure|
+H *+langmap* |'langmap'|
+N *+libcall* |libcall()|
+N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'|
+T *+lispindent* |'lisp'|
+T *+listcmds* Vim commands for the list of buffers |buffer-hidden|
+ and argument list |:argdelete|
+T *+localmap* Support for mappings local to a buffer |:map-local|
+m *+lua* |Lua| interface
+m *+lua/dyn* |Lua| interface |/dyn|
+N *+menu* |:menu|
+N *+mksession* |:mksession|
+T *+modify_fname* |filename-modifiers|
+T *+mouse* Mouse handling |mouse-using|
+N *+mouseshape* |'mouseshape'|
+N *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse|
+N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse|
+m *+mouse_gpm/dyn* Same as |+mouse_gpm| with optional library dependency
+ |/dyn|
+N *+mouse_jsbterm* JSB mouse handling |jsbterm-mouse|
+N *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse|
+N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal|
+N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse|
+N *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse|
+N *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse|
+N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse|
+T *+multi_byte* Unicode support, 16 and 32 bit characters |multibyte|
+ *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime|
+N *+multi_lang* non-English language support |multi-lang|
+m *+mzscheme* Mzscheme interface |mzscheme|
+m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn|
+m *+netbeans_intg* |netbeans|
+T *+num64* 64-bit Number support |Number|
+ Always enabled since 8.2.0271, use v:numbersize to
+ check the actual size of a Number.
+m *+ole* Win32 GUI only: |ole-interface|
+N *+packages* Loading |packages|
+T *+path_extra* Up/downwards search in 'path' and 'tags' Always
+ enabled since 9.0.0270
+m *+perl* Perl interface |perl|
+m *+perl/dyn* Perl interface |perl-dynamic| |/dyn|
+N *+persistent_undo* Persistent undo |undo-persistence|
+N *+popupwin* Popup windows |popup-window|
+ *+postscript* |:hardcopy| writes a PostScript file
+N *+printer* |:hardcopy| command
+H *+profile* |:profile| command
+m *+python* Python 2 interface |python|
+m *+python/dyn* Python 2 interface |python-dynamic| |/dyn|
+m *+python3* Python 3 interface |python|
+m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn|
+m *+python3/dyn-stable*
+ Python 3 interface |python-dynamic| |python-stable|
+ |/dyn|
+N *+quickfix* |:make| and |quickfix| commands
+N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout,
+ 'redrawtime' option
+H *+rightleft* Right to left typing |'rightleft'|
+m *+ruby* Ruby interface |ruby|
+m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn|
+T *+scrollbind* |'scrollbind'|
+N *+signs* |:sign|
+T *+smartindent* |'smartindent'|
+H *+sodium* compiled with libsodium for better encryption support
+H *+sound* |sound_playevent()|, |sound_playfile()| functions, etc.
+N *+spell* spell checking support, see |spell|
+N *+startuptime* |--startuptime| argument
+N *+statusline* Options 'statusline', 'rulerformat' and special
+ formats of 'titlestring' and 'iconstring'
+- *+sun_workshop* Removed: |workshop|
+N *+syntax* Syntax highlighting |syntax|
+ *+system()* Unix only: opposite of |+fork|
+T *+tag_binary* binary searching in tags file |tag-binary-search|
+- *+tag_old_static* Removed; method for static tags |tag-old-static|
+- *+tag_any_white* Removed; was to allow any white space in tags files
+m *+tcl* Tcl interface |tcl|
+m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn|
+m *+terminal* Support for terminal window |terminal|
+ *+terminfo* uses |terminfo| instead of termcap
+N *+termresponse* support for |t_RV| and |v:termresponse|
+N *+termguicolors* 24-bit color in xterm-compatible terminals support
+T *+textobjects* |text-objects| selection. Always enabled since 9.0.0222.
+N *+textprop* |text-properties|
+ *+tgetent* non-Unix only: able to use external termcap
+N *+timers* the |timer_start()| function
+T *+title* Setting the window 'title' and 'icon'; Always enabled
+N *+toolbar* |gui-toolbar|
+T *+user_commands* User-defined commands. |user-commands|
+ Always enabled since 8.1.1210.
+H *+vartabs* Variable-width tabstops. |'vartabstop'|
+T *+vertsplit* Vertically split windows |:vsplit|; Always enabled
+ since 8.0.1118.
+T *+vim9script* |Vim9| script
+N *+viminfo* |'viminfo'|
+T *+virtualedit* |'virtualedit'| Always enabled since 8.1.826.
+T *+visual* Visual mode |Visual-mode| Always enabled since 7.4.200.
+T *+visualextra* extra Visual mode commands |blockwise-operators|
+T *+vreplace* |gR| and |gr|
+ *+vtp* on MS-Windows console: support for 'termguicolors'
+T *+wildignore* |'wildignore'| Always enabled since 9.0.0278
+T *+wildmenu* |'wildmenu'| Always enabled since 9.0.0279
+T *+windows* more than one window; Always enabled since 8.0.1118.
+m *+writebackup* |'writebackup'| is default on
+m *+xim* X input method |xim|
+ *+xfontset* X fontset support |xfontset|
+N *+xattr* compiled with extended attribute support (Linux only)
+ *+xpm* pixmap support
+m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support|
+ *+xsmp* XSMP (X session management) support
+ *+xsmp_interact* interactive XSMP (X session management) support
+N *+xterm_clipboard* Unix only: xterm clipboard handling
+m *+xterm_save* save and restore xterm screen |xterm-screens|
+N *+X11* Unix only: can restore window title |X11|
+
+ */dyn* *E370* *E448*
+ To some of the features "/dyn" is added when the
+ feature is only available when the related library can
+ be dynamically loaded.
+
+:ve[rsion] {nr} Is now ignored. This was previously used to check the
+ version number of a .vimrc file. It was removed,
+ because you can now use the ":if" command for
+ version-dependent behavior.
+
+ *:redi* *:redir*
+:redi[r][!] > {file} Redirect messages to file {file}. The messages which
+ are the output of commands are written to that file,
+ until redirection ends. The messages are also still
+ shown on the screen. When [!] is included, an
+ existing file is overwritten. When [!] is omitted,
+ and {file} exists, this command fails.
+
+ Only one ":redir" can be active at a time. Calls to
+ ":redir" will close any active redirection before
+ starting redirection to the new target. For recursive
+ use check out |execute()|.
+
+ To stop the messages and commands from being echoed to
+ the screen, put the commands in a function and call it
+ with ":silent call Function()".
+ An alternative is to use the 'verbosefile' option,
+ this can be used in combination with ":redir".
+
+:redi[r] >> {file} Redirect messages to file {file}. Append if {file}
+ already exists.
+
+:redi[r] @{a-zA-Z}
+:redi[r] @{a-zA-Z}> Redirect messages to register {a-z}. Append to the
+ contents of the register if its name is given
+ uppercase {A-Z}. The ">" after the register name is
+ optional.
+:redi[r] @{a-z}>> Append messages to register {a-z}.
+
+:redi[r] @*>
+:redi[r] @+> Redirect messages to the selection or clipboard. For
+ backward compatibility, the ">" after the register
+ name can be omitted. See |quotestar| and |quoteplus|.
+:redi[r] @*>>
+:redi[r] @+>> Append messages to the selection or clipboard.
+
+:redi[r] @"> Redirect messages to the unnamed register. For
+ backward compatibility, the ">" after the register
+ name can be omitted.
+:redi[r] @">> Append messages to the unnamed register.
+ *E1092*
+:redi[r] => {var} Redirect messages to a variable.
+ In legacy script: If the variable doesn't exist, then
+ it is created. If the variable exists, then it is
+ initialized to an empty string. After the redirection
+ starts, if the variable is removed or locked or the
+ variable type is changed, then further command output
+ messages will cause errors. When using a local
+ variable (l:var in a function or s:var in a script)
+ and another `:redir` causes the current one to end,
+ the scope might be different and the assignment fails.
+ In Vim9 script: the variable must have been declared
+ as a string.
+ The variable will remain empty until redirection ends.
+ Only string variables can be used.
+ To get the output of one command the |execute()|
+ function can be used instead of redirection.
+
+:redi[r] =>> {var} Append messages to an existing variable. Only string
+ variables can be used.
+ *E1185*
+:redi[r] END End redirecting messages.
+
+ *:filt* *:filter*
+:filt[er][!] {pattern} {command}
+:filt[er][!] /{pattern}/ {command}
+ Restrict the output of {command} to lines matching
+ with {pattern}. For example, to list only xml files: >
+ :filter /\.xml$/ oldfiles
+< If the [!] is given, restrict the output of {command}
+ to lines that do NOT match {pattern}.
+
+ {pattern} is a Vim search pattern. Instead of enclosing
+ it in / any non-ID character (see |'isident'|) can be
+ used, so long as it does not appear in {pattern}.
+ Without the enclosing character the pattern cannot
+ include the bar character. 'ignorecase' is not used.
+
+ The pattern is matched against the relevant part of
+ the output, not necessarily the whole line. Only some
+ commands support filtering, try it out to check if it
+ works. Some of the commands that support filtering:
+ |:#| - filter whole line
+ |:clist| - filter by file name or module name
+ |:command| - filter by command name
+ |:files| - filter by file name
+ |:highlight| - filter by highlight group
+ |:jumps| - filter by file name
+ |:let| - filter by variable name
+ |:list| - filter whole line
+ |:llist| - filter by file name or module name
+ |:marks| - filter by text in the current file,
+ or file name for other files
+ |:oldfiles| - filter by file name
+ |:registers| - filter by register contents
+ (does not work multi-line)
+ |:set| - filter by option name
+
+ Only normal messages are filtered, error messages are
+ not.
+
+ *:sil* *:silent* *:silent!*
+:sil[ent][!] {command} Execute {command} silently. Normal messages will not
+ be given or added to the message history.
+ When [!] is added, error messages will also be
+ skipped, and commands and mappings will not be aborted
+ when an error is detected. |v:errmsg| is still set.
+ When [!] is not used, an error message will cause
+ further messages to be displayed normally.
+ Redirection, started with |:redir|, will continue as
+ usual, although there might be small differences.
+ This will allow redirecting the output of a command
+ without seeing it on the screen. Example: >
+ :redir >/tmp/foobar
+ :silent g/Aap/p
+ :redir END
+< To execute a Normal mode command silently, use the
+ |:normal| command. For example, to search for a
+ string without messages: >
+ :silent exe "normal /path\<CR>"
+< ":silent!" is useful to execute a command that may
+ fail, but the failure is to be ignored. Example: >
+ :let v:errmsg = ""
+ :silent! /^begin
+ :if v:errmsg != ""
+ : ... pattern was not found
+< ":silent" will also avoid the hit-enter prompt. When
+ using this for an external command, this may cause the
+ screen to be messed up. Use |CTRL-L| to clean it up
+ then.
+ ":silent menu ..." defines a menu that will not echo a
+ Command-line command. The command will still produce
+ messages though. Use ":silent" in the command itself
+ to avoid that: ":silent menu .... :silent command".
+
+ *:uns* *:unsilent*
+:uns[ilent] {command} Execute {command} not silently. Only makes a
+ difference when |:silent| was used to get to this
+ command.
+ Use this for giving a message even when |:silent| was
+ used. In this example |:silent| is used to avoid the
+ message about reading the file and |:unsilent| to be
+ able to list the first line of each file. >
+ :silent argdo unsilent echo expand('%') .. ": " .. getline(1)
+<
+
+ *:verb* *:verbose*
+:[count]verb[ose] {command}
+ Execute {command} with 'verbose' set to [count]. If
+ [count] is omitted one is used. ":0verbose" can be
+ used to set 'verbose' to zero.
+ The additional use of ":silent" makes messages
+ generated but not displayed.
+ The combination of ":silent" and ":verbose" can be
+ used to generate messages and check them with
+ |v:statusmsg| and friends. For example: >
+ :let v:statusmsg = ""
+ :silent verbose runtime foobar.vim
+ :if v:statusmsg != ""
+ : " foobar.vim could not be found
+ :endif
+< When concatenating another command, the ":verbose"
+ only applies to the first one: >
+ :4verbose set verbose | set verbose
+< verbose=4 ~
+ verbose=0 ~
+ For logging verbose messages in a file use the
+ 'verbosefile' option.
+
+ *:verbose-cmd*
+When 'verbose' is non-zero, listing the value of a Vim option or a key map or
+an abbreviation or a user-defined function or a command or a highlight group
+or an autocommand will also display where it was last defined. If it was
+defined manually then there will be no "Last set" message. When it was
+defined while executing a function, user command or autocommand, the script in
+which it was defined is reported.
+{not available when compiled without the |+eval| feature}
+
+ *K*
+K Run a program to lookup the keyword under the
+ cursor. The name of the program is given with the
+ 'keywordprg' (kp) option (default is "man"). The
+ keyword is formed of letters, numbers and the
+ characters in 'iskeyword'. The keyword under or
+ right of the cursor is used. The same can be done
+ with the command >
+ :!{program} {keyword}
+< There is an example of a program to use in the tools
+ directory of Vim. It is called "ref" and does a
+ simple spelling check.
+ Special cases:
+ - If 'keywordprg' begins with ":" it is invoked as
+ a Vim Ex command with [count].
+ - If 'keywordprg' is empty, the ":help" command is
+ used. It's a good idea to include more characters
+ in 'iskeyword' then, to be able to find more help.
+ - When 'keywordprg' is equal to "man" or starts with
+ ":", a [count] before "K" is inserted after
+ keywordprg and before the keyword. For example,
+ using "2K" while the cursor is on "mkdir", results
+ in: >
+ !man 2 mkdir
+< - When 'keywordprg' is equal to "man -s", a count
+ before "K" is inserted after the "-s". If there is
+ no count, the "-s" is removed.
+
+ *v_K*
+{Visual}K Like "K", but use the visually highlighted text for
+ the keyword. Only works when the highlighted text is
+ not more than one line.
+
+[N]gs *gs* *:sl* *:sleep*
+:[N]sl[eep] [N][m] Do nothing for [N] seconds. When [m] is included,
+ sleep for [N] milliseconds. The count for "gs" always
+ uses seconds. The default is one second. >
+ :sleep "sleep for one second
+ :5sleep "sleep for five seconds
+ :sleep 100m "sleep for 100 milliseconds
+ 10gs "sleep for ten seconds
+< Can be interrupted with CTRL-C (CTRL-Break on
+ MS-Windows). "gs" stands for "goto sleep".
+ While sleeping the cursor is positioned in the text,
+ if at a visible position.
+ Also process the received netbeans messages. {only
+ available when compiled with the |+netbeans_intg|
+ feature}
+
+ *:sl!* *:sleep!*
+:[N]sl[eep]! [N][m] Same as above, but hide the cursor.
+
+ *:xrestore* *:xr*
+:xr[estore] [display] Reinitializes the connection to the X11 server. Useful
+ after the X server restarts, e.g. when running Vim for
+ long time inside screen/tmux and connecting from
+ different machines.
+ [display] should be in the format of the $DISPLAY
+ environment variable (e.g. "localhost:10.0")
+ If [display] is omitted, then it reinitializes the
+ connection to the X11 server using the same value as
+ was used for the previous execution of this command.
+ If the value was never specified, then it uses the
+ value of $DISPLAY environment variable as it was when
+ Vim was started.
+ {only available when compiled with the |+clipboard|
+ feature}
+
+ *g_CTRL-A*
+g CTRL-A Only when Vim was compiled with MEM_PROFILING defined
+ (which is very rare): print memory usage statistics.
+ Only useful for debugging Vim.
+ For incrementing in Visual mode see |v_g_CTRL-A|.
+
+==============================================================================
+2. Using Vim like less or more *less*
+
+If you use the less or more program to view a file, you don't get syntax
+highlighting. Thus you would like to use Vim instead. You can do this by
+using the shell script "$VIMRUNTIME/macros/less.sh".
+
+This shell script uses the Vim script "$VIMRUNTIME/macros/less.vim". It sets
+up mappings to simulate the commands that less supports. Otherwise, you can
+still use the Vim commands.
+
+This isn't perfect. For example, when viewing a short file Vim will still use
+the whole screen. But it works well enough for most uses, and you get syntax
+highlighting.
+
+The "h" key will give you a short overview of the available commands.
+
+If you want to set options differently when using less, define the
+LessInitFunc in your vimrc, for example: >
+
+ func LessInitFunc()
+ set nocursorcolumn nocursorline
+ endfunc
+<
+
+ vim:tw=78:ts=8:noet:ft=help:norl: