Home Explore Blog CI



neovim

12th chunk of `runtime/doc/repeat.txt`
9a46062ff429f158d29ef014e172412cf0ddf7c76e54666a0000000100000fa1
 up to a single character, unless more than one command
  starts with the same letter.  "f" stands for "finish", use "fr" for "frame".
- Hitting <CR> will repeat the previous one.  When doing another command, this
  is reset (because it's not clear what you want to repeat).
- When you want to use the Ex command with the same name, prepend a colon:
  ":cont", ":next", ":finish" (or shorter).

The backtrace shows the hierarchy of function calls, e.g.:
	>bt ~
	  3 function One[3] ~
	  2 Two[3] ~
	->1 Three[3] ~
	  0 Four ~
	line 1: let four = 4 ~

The "->" points to the current frame.  Use "up", "down" and "frame N" to
select another frame.

In the current frame you can evaluate the local function variables.  There is
no way to see the command at the current line yet.


DEFINING BREAKPOINTS
							*:breaka* *:breakadd*
:breaka[dd] func [lnum] {name}
		Set a breakpoint in a function.  Example: >
			:breakadd func Explore
<		Doesn't check for a valid function name, thus the breakpoint
		can be set before the function is defined.

:breaka[dd] file [lnum] {name}
		Set a breakpoint in a sourced file.  Example: >
			:breakadd file 43 init.vim

:breaka[dd] here
		Set a breakpoint in the current line of the current file.
		Like doing: >
			:breakadd file <cursor-line> <current-file>
<		Note that this only works for commands that are executed when
		sourcing the file, not for a function defined in that file.

:breaka[dd] expr {expression}
		Sets a breakpoint, that will break whenever the {expression}
		evaluates to a different value. Example: >
			:breakadd expr g:lnum
<		Will break, whenever the global variable lnum changes.

		Errors in evaluation are suppressed, you can use the name of a
		variable that does not exist yet.  This also means you will
		not notice anything if the expression has a mistake.

		Note if you watch a |script-variable| this will break
		when switching scripts, since the script variable is only
		valid in the script where it has been defined and if that
		script is called from several other scripts, this will stop
		whenever that particular variable will become visible or
		inaccessible again.

The [lnum] is the line number of the breakpoint.  Vim will stop at or after
this line.  When omitted line 1 is used.

							*:debug-name*
{name} is a pattern that is matched with the file or function name.  The
pattern is like what is used for autocommands.  There must be a full match (as
if the pattern starts with "^" and ends in "$").  A "*" matches any sequence
of characters.  'ignorecase' is not used, but "\c" can be used in the pattern
to ignore case |/\c|.  Don't include the () for the function name!

The match for sourced scripts is done against the full file name.  If no path
is specified the current directory is used.  Examples: >
	breakadd file explorer.vim
matches "explorer.vim" in the current directory. >
	breakadd file *explorer.vim
matches ".../plugin/explorer.vim", ".../plugin/iexplorer.vim", etc. >
	breakadd file */explorer.vim
matches ".../plugin/explorer.vim" and "explorer.vim" in any other directory.

The match for functions is done against the name as it's shown in the output
of ":function".  For local functions this means that something like "<SNR>99_"
is prepended.

Note that functions are first loaded and later executed.  When they are loaded
the "file" breakpoints are checked, when they are executed the "func"
breakpoints.


DELETING BREAKPOINTS
						*:breakd* *:breakdel* *E161*
:breakd[el] {nr}
		Delete breakpoint {nr}.  Use |:breaklist| to see the number of
		each breakpoint.

:breakd[el] *
		Delete all breakpoints.

:breakd[el] func [lnum] {name}
		Delete a breakpoint in a function.

:breakd[el] file [lnum] {name}
		Delete a breakpoint in a sourced file.

:breakd[el] here
		Delete a breakpoint at the current line of the current file.

When [lnum] is omitted, the first breakpoint in the function or file is
deleted.
The {name} must be exactly the same as what was typed for the ":breakadd"
command.

Title: More on Debug Mode: Additional Commands, Breakpoints, and Deletion
Summary
This section delves deeper into Vim's debug mode, explaining additional commands, breakpoint definition, and deletion. It covers the use of shortened commands, repeating commands with <CR>, and using Ex commands with the same name. It illustrates backtrace information and frame selection. Further, it details breakpoint creation using `:breakadd` for functions, files, and expressions. Finally, it explains how to delete breakpoints using `:breakdel`, specifying breakpoint numbers, all breakpoints, or breakpoints based on function/file names and line numbers.