intro.txt (29964B)
1 *intro.txt* Nvim 2 3 4 NVIM REFERENCE MANUAL 5 6 7 Nvim *ref* *reference* 8 9 Type |gO| to see the table of contents. 10 11 ============================================================================== 12 Introduction *intro* 13 14 Vim is a text editor which includes most commands from the Unix program "Vi" 15 and many new ones. 16 17 An overview of this manual can be found in the file "help.txt", |help.txt|. 18 It can be accessed from within Vim with the <Help> or <F1> key and with the 19 |:help| command (just type ":help", without the bars or quotes). 20 The 'helpfile' option can be set to the name of the help file, in case it 21 is not located in the default place. You can jump to subjects like with tags: 22 Use CTRL-] to jump to a subject under the cursor, use CTRL-T to jump back. 23 24 *pronounce* 25 Vim is pronounced as one word, like Jim. So Nvim is "En-Vim", two syllables. 26 27 This manual is a reference for all Nvim editor and API features. It is not an 28 introduction; instead for beginners, there is a hands-on |tutor|, |lua-guide|, 29 and |user-manual|. 30 31 ------------------------------------------------------------------------------ 32 Resources *resources* 33 34 *internet* *www* *distribution* 35 Nvim home page: 36 37 https://neovim.io/ 38 39 *book* 40 There are many resources to learn Vi, Vim, and Nvim. We recommend: 41 42 - "Practical Vim" by Drew Neil. Acclaimed for its focus on quickly learning 43 common editing tasks with Vim. 44 - "Modern Vim" by Drew Neil. Explores new features in Nvim and Vim 8. 45 - http://vimcasts.org 46 - "Vim - Vi Improved" by Steve Oualline. This was the first book dedicated to 47 Vim. Parts of it were included in the Vim user manual. |frombook| ISBN: 48 0735710015 49 - For more information see https://www.vim.org/iccf/click5.html 50 - Vim FAQ: https://vimhelp.org/vim_faq.txt.html 51 52 *bugs* *bug-report* *feature-request* 53 Report bugs and request features here: https://github.com/neovim/neovim/issues 54 Be brief, yet complete. Always give a reproducible example and try to find 55 out which settings or other things trigger the bug. If Nvim crashed, try to 56 get a backtrace (see |dev-tools-backtrace|). 57 58 ============================================================================== 59 Installing Nvim *install* 60 61 *download* *upgrade* *ubuntu* 62 To install or upgrade Nvim, you can... 63 - Download a pre-built archive: 64 https://github.com/neovim/neovim/releases 65 - Use your system package manager: 66 https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-package 67 - Build from source: 68 https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-source 69 70 ------------------------------------------------------------------------------ 71 Un-installing Nvim *uninstall* 72 73 To uninstall Nvim: 74 - If you downloaded a pre-built archive or built Nvim from source (e.g. 75 `make install`), just delete its files, typically located in: > 76 /usr/local/bin/nvim 77 /usr/local/share/nvim 78 < 79 - To find where Nvim is installed, run these commands: > 80 :echo v:progpath 81 :echo $VIMRUNTIME 82 < 83 - If you installed via package manager, read your package manager's 84 documentation. Common examples: 85 - APT (Debian, Ubuntu, …): `apt-get remove neovim` 86 - Homebrew (macOS): `brew uninstall neovim` 87 - Scoop (Windows): `scoop uninstall neovim` 88 89 ============================================================================== 90 Sponsor Vim/Nvim development *sponsor* 91 92 Fixing bugs and adding new features takes a lot of time and effort. To show 93 your appreciation for the work and motivate developers to continue working on 94 Vim please send a donation. 95 96 The money you donated will be mainly used to help children in Uganda. See 97 |uganda|. But at the same time donations increase the development team 98 motivation to keep working on Vim! 99 100 For the most recent information about sponsoring look on the Vim web site: 101 102 https://www.vim.org/sponsor/ 103 104 105 Nvim development is funded separately from Vim: 106 107 https://neovim.io/#sponsor 108 109 ============================================================================== 110 Bram Moolenaar *Bram* *Moolenaar* *Bram-Moolenaar* *brammool* 111 112 Nvim is a fork of the Vim ("Vi IMproved") text editor, which was originally 113 developed by Bram Moolenaar. Searching his name within the source code of 114 Nvim will reveal just how much of his work still remains in Nvim. 115 On August 3, 2023, he passed away at the age of 62. If Vim or Nvim have been 116 of use to you in your life, please read |Uganda| and consider honoring his 117 memory however you may see fit. 118 119 - Obituary Articles: https://github.com/vim/vim/discussions/12742 120 - Say Farewell: https://github.com/vim/vim/discussions/12737 121 122 ============================================================================== 123 Keycodes *key-notation* *key-codes* *keycodes* 124 125 These names for keys are used in the documentation. They can also be used 126 with the ":map" command. 127 128 notation meaning equivalent decimal value(s) ~ 129 <Nul> Zero CTRL-@ 0 (stored as 10) *<Nul>* 130 <BS> Backspace CTRL-H 8 *backspace* 131 <Tab> Tab CTRL-I 9 *tab* *Tab* 132 *linefeed* 133 <NL> Linefeed CTRL-J 10 (used for <Nul>) 134 <CR> Carriage return CTRL-M 13 *carriage-return* 135 <Return> Same as <CR> *<Return>* 136 <Enter> Same as <CR> *<Enter>* 137 <Esc> Escape CTRL-[ 27 *escape* *<Esc>* 138 <Space> Space 32 *space* 139 <lt> Less-than < 60 *<lt>* 140 <Bslash> Backslash \ 92 *backslash* *<Bslash>* 141 <Bar> Vertical bar | 124 *<Bar>* 142 <Del> Delete 127 143 <CSI> Command sequence intro ALT-Esc 155 *<CSI>* 144 145 <EOL> End-of-line (can be <CR>, <NL> or <CR><NL>, 146 Depends on system and 'fileformat') *<EOL>* 147 <Ignore> Cancel wait-for-character *<Ignore>* 148 <NOP> Do nothing (no-op). Useful in mappings. *<Nop>* 149 <Ignore> is a key, <NOP> is "absence of a key". 150 151 <Up> Cursor-up *cursor-up* *cursor_up* 152 <Down> Cursor-down *cursor-down* *cursor_down* 153 <Left> Cursor-left *cursor-left* *cursor_left* 154 <Right> Cursor-right *cursor-right* *cursor_right* 155 <S-Up> Shift-cursor-up 156 <S-Down> Shift-cursor-down 157 <S-Left> Shift-cursor-left 158 <S-Right> Shift-cursor-right 159 <C-Left> Control-cursor-left 160 <C-Right> Control-cursor-right 161 <F1> - <F12> Function keys 1 to 12 *function_key* *function-key* 162 <S-F1> - <S-F12> Shift-function keys 1 to 12 *<S-F1>* 163 <Help> Help key 164 <Undo> Undo key 165 <Find> Find key 166 <Select> Select key 167 <Insert> Insert key 168 <Home> Home *home* 169 <End> End *end* 170 <PageUp> Page-up *page_up* *page-up* 171 <PageDown> Page-down *page_down* *page-down* 172 <kUp> Keypad cursor-up *keypad-cursor-up* 173 <kDown> Keypad cursor-down *keypad-cursor-down* 174 <kLeft> Keypad cursor-left *keypad-cursor-left* 175 <kRight> Keypad cursor-right *keypad-cursor-right* 176 <kHome> Keypad home (upper left) *keypad-home* 177 <kEnd> Keypad end (lower left) *keypad-end* 178 <kOrigin> Keypad origin (middle) *keypad-origin* 179 <kPageUp> Keypad page-up (upper right) *keypad-page-up* 180 <kPageDown> Keypad page-down (lower right) *keypad-page-down* 181 <kDel> Keypad delete *keypad-delete* 182 <kPlus> Keypad + *keypad-plus* 183 <kMinus> Keypad - *keypad-minus* 184 <kMultiply> Keypad * *keypad-multiply* 185 <kDivide> Keypad / *keypad-divide* 186 <kPoint> Keypad . *keypad-point* 187 <kComma> Keypad , *keypad-comma* 188 <kEqual> Keypad = *keypad-equal* 189 <kEnter> Keypad Enter *keypad-enter* 190 <k0> - <k9> Keypad 0 to 9 *keypad-0* *keypad-9* 191 <S-…> Shift-key *shift* *<S-* 192 <C-…> Control-key *control* *ctrl* *<C-* 193 <M-…> Alt-key or meta-key *META* *ALT* *<M-* 194 <A-…> Same as <M-…> *<A-* 195 <T-…> Meta-key, when it's not alt *<T-* 196 <D-…> Command-key or "super" key *<D-* 197 198 199 Note: 200 201 - Availability of some keys (<Help>, <S-Right>, …) depends on the UI or host 202 terminal. 203 - If numlock is on the |TUI| receives plain ASCII values, so mapping <k0>, 204 <k1>, ..., <k9> and <kPoint> will not work. 205 - Nvim supports mapping multibyte chars with modifiers such as `<M-ä>`. Which 206 combinations actually work depends on the UI or host terminal. 207 - When a key is pressed using a meta or alt modifier and no mapping exists for 208 that keypress, Nvim may behave as though <Esc> was pressed before the key. 209 - It is possible to notate combined modifiers (e.g. <M-C-T> for CTRL-ALT-T), 210 but your terminal must encode the input for that to work. |tui-input| 211 212 *<>* 213 Examples are often given in the <> notation. Sometimes this is just to make 214 clear what you need to type, but often it can be typed literally, e.g., with 215 the ":map" command. The rules are: 216 1. Printable characters are typed directly, except backslash and "<" 217 2. Backslash is represented with "\\", double backslash, or "<Bslash>". 218 3. Literal "<" is represented with "\<" or "<lt>". When there is no 219 confusion possible, "<" can be used directly. 220 4. "<key>" means the special key typed (see the table above). Examples: 221 - <Esc> Escape key 222 - <C-G> CTRL-G 223 - <Up> cursor up key 224 - <C-LeftMouse> Control- left mouse click 225 - <S-F11> Shifted function key 11 226 - <M-a> Meta- a ('a' with bit 8 set) 227 - <M-A> Meta- A ('A' with bit 8 set) 228 229 The <> notation uses <lt> to escape the special meaning of key names. Using a 230 backslash also works, but only when 'cpoptions' does not include the 'B' flag. 231 232 Examples for mapping CTRL-H to the six characters "<Home>": >vim 233 :imap <C-H> \<Home> 234 :imap <C-H> <lt>Home> 235 The first one only works when the 'B' flag is not in 'cpoptions'. The second 236 one always works. 237 To get a literal "<lt>" in a mapping: >vim 238 :map <C-L> <lt>lt> 239 240 The notation can be used in a double quoted strings, using "\<" at the start, 241 e.g. "\<C-Space>". This results in a special key code. To convert this back 242 to readable text use `keytrans()`. 243 244 ============================================================================== 245 Modes, introduction *vim-modes-intro* *vim-modes* 246 247 Vim has seven BASIC modes: 248 249 *Normal* *Normal-mode* *command-mode* 250 - Normal mode: In Normal mode you can enter all the normal editor 251 commands. If you start the editor you are in this 252 mode. This is also known as command mode. 253 254 - Visual mode: This is like Normal mode, but the movement commands 255 extend a highlighted area. When a non-movement 256 command is used, it is executed for the highlighted 257 area. See |Visual-mode|. 258 If the 'showmode' option is on "-- VISUAL --" is shown 259 at the bottom of the window. 260 261 - Select mode: This looks most like the MS-Windows selection mode. 262 Typing a printable character deletes the selection 263 and starts Insert mode. See |Select-mode|. 264 If the 'showmode' option is on "-- SELECT --" is shown 265 at the bottom of the window. 266 267 - Insert mode: In Insert mode the text you type is inserted into the 268 buffer. See |Insert-mode|. 269 If the 'showmode' option is on "-- INSERT --" is shown 270 at the bottom of the window. 271 272 - Cmdline mode: In Command-line mode (also called Cmdline mode) you 273 can enter one line of text at the bottom of the 274 window. This is for the Ex commands, ":", the pattern 275 search commands, "?" and "/", and the filter command, 276 "!". |Cmdline-mode| 277 278 - Ex mode: Like Command-line mode, but after entering a command 279 you remain in Ex mode. Very limited editing of the 280 command line. |Ex-mode| 281 282 *Terminal-mode* 283 - Terminal mode: In Terminal mode all input (except CTRL-\) is sent to 284 the process running in the current |terminal| buffer. 285 If CTRL-\ is pressed, the next key is sent unless it 286 is CTRL-N (|CTRL-\_CTRL-N|) or CTRL-O (|t_CTRL-\_CTRL-O|). 287 If the 'showmode' option is on "-- TERMINAL --" is shown 288 at the bottom of the window. 289 290 There are six ADDITIONAL modes. These are variants of the BASIC modes: 291 292 *Operator-pending* *Operator-pending-mode* 293 - Operator-pending mode: This is like Normal mode, but after an operator 294 command has started, and Vim is waiting for a {motion} 295 to specify the text that the operator will work on. 296 297 - Replace mode: Replace mode is a special case of Insert mode. You 298 can do the same things as in Insert mode, but for 299 each character you enter, one character of the 300 existing text is deleted. See |Replace-mode|. 301 If the 'showmode' option is on "-- REPLACE --" is 302 shown at the bottom of the window. 303 304 - Virtual Replace mode: Virtual Replace mode is similar to Replace mode, but 305 instead of file characters you are replacing screen 306 real estate. See |Virtual-Replace-mode|. 307 If the 'showmode' option is on "-- VREPLACE --" is 308 shown at the bottom of the window. 309 310 - Insert Normal mode: Entered when CTRL-O is typed in Insert mode (see 311 |i_CTRL-O|). This is like Normal mode, but after 312 executing one command Vim returns to Insert mode. 313 If the 'showmode' option is on "-- (insert) --" is 314 shown at the bottom of the window. 315 316 - Insert Visual mode: Entered when starting a Visual selection from Insert 317 mode, e.g., by using CTRL-O and then "v", "V" or 318 CTRL-V. When the Visual selection ends, Vim returns 319 to Insert mode. 320 If the 'showmode' option is on "-- (insert) VISUAL --" 321 is shown at the bottom of the window. 322 323 - Insert Select mode: Entered when starting Select mode from Insert mode. 324 E.g., by dragging the mouse or <S-Right>. 325 When the Select mode ends, Vim returns to Insert mode. 326 If the 'showmode' option is on "-- (insert) SELECT --" 327 is shown at the bottom of the window. 328 329 ============================================================================== 330 Switching from mode to mode *mode-switching* 331 332 If for any reason you do not know which mode you are in, you can always get 333 back to Normal mode by typing <Esc> twice. This doesn't work for Ex mode 334 though, use ":visual". 335 You will know you are back in Normal mode when you see the screen flash or 336 hear the bell after you type <Esc>. However, when pressing <Esc> after using 337 CTRL-O in Insert mode you get a beep but you are still in Insert mode, type 338 <Esc> again. 339 340 *i_esc* 341 > 342 FROM mode TO mode 343 Normal Visual Select Insert Replace Cmd-line Ex > 344 Normal v V ^V *4 *1 R gR : / ? ! gQ 345 Visual *2 ^G c C -- : -- 346 Select *5 ^O ^G *6 -- -- -- 347 Insert <Esc> -- -- <Insert> -- -- 348 Replace <Esc> -- -- <Insert> -- -- 349 Command-line *3 -- -- :start -- -- 350 Ex :vi -- -- -- -- -- 351 352 -- not possible 353 < 354 355 - 1 Go from Normal mode to Insert mode by giving the command "i", "I", "a", 356 "A", "o", "O", "c", "C", "s" or S". 357 - 2 Go from Visual mode to Normal mode by giving a non-movement command, which 358 causes the command to be executed, or by hitting <Esc> "v", "V" or "CTRL-V" 359 (see |v_v|), which just stops Visual mode without side effects. 360 - 3 Go from Command-line mode to Normal mode by: 361 - Hitting <CR> or <NL>, which causes the entered command to be executed. 362 - Deleting the complete line (e.g., with CTRL-U) and giving a final <BS>. 363 - Hitting CTRL-C or <Esc>, which quits the command-line without executing 364 the command. 365 In the last case <Esc> may be the character defined with the 'wildchar' 366 option, in which case it will start command-line completion. You can 367 ignore that and type <Esc> again. 368 - 4 Go from Normal to Select mode by: 369 - use the mouse to select text while 'selectmode' contains "mouse" 370 - use a non-printable command to move the cursor while keeping the Shift 371 key pressed, and the 'selectmode' option contains "key" 372 - use "v", "V" or "CTRL-V" while 'selectmode' contains "cmd" 373 - use "gh", "gH" or "g CTRL-H" |g_CTRL-H| 374 - 5 Go from Select mode to Normal mode by using a non-printable command to move 375 the cursor, without keeping the Shift key pressed. 376 - 6 Go from Select mode to Insert mode by typing a printable character. The 377 selection is deleted and the character is inserted. 378 379 *CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* 380 *v_CTRL-\_CTRL-N* *t_CTRL-\_CTRL-N* 381 Additionally the command CTRL-\ CTRL-N or <C-\><C-N> can be used to go to 382 Normal mode from any other mode. This can be used to make sure Vim is in 383 Normal mode, without causing a beep like <Esc> would. However, this does not 384 work in Ex mode. When used after a command that takes an argument, such as 385 |f| or |m|, the timeout set with 'ttimeoutlen' applies. 386 387 *CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G* 388 CTRL-\ CTRL-G works the same as |CTRL-\_CTRL-N| for backward compatibility. 389 390 *gQ* *mode-Ex* *Ex-mode* *Ex* *EX* *E501* 391 gQ Switch to Ex mode. This is like typing ":" commands 392 one after another, except: 393 - You don't have to keep pressing ":". 394 - The screen doesn't get updated after each command. 395 Use the `:vi` command (|:visual|) to exit this mode. 396 397 ============================================================================== 398 Window contents *window-contents* 399 400 In Normal mode and Insert/Replace mode the screen window will show the current 401 contents of the buffer: What You See Is What You Get. There are two 402 exceptions: 403 - When the 'cpoptions' option contains '$', and the change is within one line, 404 the text is not directly deleted, but a '$' is put at the last deleted 405 character. 406 - When inserting text in one window, other windows on the same text are not 407 updated until the insert is finished. 408 409 Lines longer than the window width will wrap, unless the 'wrap' option is off 410 (see below). The 'linebreak' option can be set to wrap at a blank character. 411 412 If the window has room after the last line of the buffer, Vim will show '~' in 413 the first column of the last lines in the window, like this: 414 > 415 +-----------------------+ 416 |some line | 417 |last line | 418 |~ | 419 |~ | 420 +-----------------------+ 421 < 422 Thus the '~' lines indicate that the end of the buffer was reached. 423 424 If the last line in a window doesn't fit, Vim will indicate this with a '@' in 425 the first column of the last lines in the window, like this: 426 > 427 +-----------------------+ 428 |first line | 429 |second line | 430 |@ | 431 |@ | 432 +-----------------------+ 433 < 434 Thus the '@' lines indicate that there is a line that doesn't fit in the 435 window. 436 437 When the "lastline" flag is present in the 'display' option, you will not see 438 '@' characters at the left side of window. If the last line doesn't fit 439 completely, only the part that fits is shown, and the last three characters of 440 the last line are replaced with "@@@", like this: 441 > 442 +-----------------------+ 443 |first line | 444 |second line | 445 |a very long line that d| 446 |oesn't fit in the wi@@@| 447 +-----------------------+ 448 < 449 If there is a single line that is too long to fit in the window, this is a 450 special situation. Vim will show only part of the line, around where the 451 cursor is. There are no special characters shown, so that you can edit all 452 parts of this line. 453 454 The |hl-NonText| highlight group can be used to set special highlighting 455 for the '@' and '~' characters. This makes it possible to distinguish them 456 from real characters in the buffer. 457 458 The 'showbreak' option contains the string to put in front of wrapped lines. 459 460 *wrap-off* 461 If the 'wrap' option is off, long lines will not wrap. Only the part that 462 fits on the screen is shown. If the cursor is moved to a part of the line 463 that is not shown, the screen is scrolled horizontally. The advantage of 464 this method is that columns are shown as they are and lines that cannot fit 465 on the screen can be edited. The disadvantage is that you cannot see all the 466 characters of a line at once. The 'sidescroll' option can be set to the 467 minimal number of columns to scroll. 468 469 All normal ASCII characters are displayed directly on the screen. The <Tab> 470 is replaced with the number of spaces that it represents. Other non-printing 471 characters are replaced with "^{char}", where {char} is the non-printing 472 character with 64 added. Thus character 7 (bell) will be shown as "^G". 473 Characters between 127 and 160 are replaced with "~{char}", where {char} is 474 the character with 64 subtracted. These characters occupy more than one 475 position on the screen. The cursor can only be positioned on the first one. 476 477 If you set the 'number' option, all lines will be preceded with their 478 number. Tip: If you don't like wrapping lines to mix with the line numbers, 479 set the 'showbreak' option to eight spaces: > 480 ":set showbreak=\ \ \ \ \ \ \ \ " 481 482 If you set the 'list' option, <Tab> characters will not be shown as several 483 spaces, but as "^I". A '$' will be placed at the end of the line, so you can 484 find trailing blanks. 485 486 In Command-line mode only the command-line itself is shown correctly. The 487 display of the buffer contents is updated as soon as you go back to Command 488 mode. 489 490 The last line of the window is used for status and other messages. The 491 status messages will only be used if an option is on: > 492 493 status message option default Unix default 494 current mode 'showmode' on on 495 command characters 'showcmd' on off 496 cursor position 'ruler' off off 497 498 The current mode is "-- INSERT --" or "-- REPLACE --", see 'showmode'. The 499 command characters are those that you typed but were not used yet. 500 501 If you have a slow terminal you can switch off the status messages to speed 502 up editing: > 503 :set nosc noru nosm 504 505 If there is an error, an error message will be shown for at least one second 506 (in reverse video). 507 508 Some commands show how many lines were affected. Above which threshold this 509 happens can be controlled with the 'report' option (default 2). 510 511 The name Vim and the full name of the current file name will be shown in the 512 title bar. When the window is resized, Vim will automatically redraw the 513 window. You may make the window as small as you like, but if it gets too 514 small not a single line will fit in it. Make it at least 40 characters wide 515 to be able to read most messages on the last line. 516 517 ============================================================================== 518 Definitions *definitions* *jargon* 519 520 - buffer: Contains lines of text, usually from a file. 521 - screen: The whole area that Nvim uses to display things. 522 - window: A view on a buffer. There can be multiple windows for one buffer. 523 - frame: Windows are kept in a tree of frames. Each frame contains a column, 524 row, or window ("leaf" frame). 525 526 A screen contains one or more windows, separated by status lines and with the 527 command line at the bottom. 528 > 529 +-------------------------------+ 530 screen | window 1 | window 2 | 531 | | | 532 | | | 533 |= status line =|= status line =| 534 | window 3 | 535 | | 536 | | 537 |==== status line ==============| 538 |command line | 539 +-------------------------------+ 540 < 541 The command line is also used for messages. It scrolls up the screen when 542 there is not enough room in the command line. 543 544 A difference is made between four types of lines: 545 546 - buffer lines: The lines in the buffer. This is the same as the 547 lines as they are read from/written to a file. They 548 can be thousands of characters long. 549 - logical lines: The buffer lines with folding applied. Buffer lines 550 in a closed fold are changed to a single logical line: 551 "+-- 99 lines folded". They can be thousands of 552 characters long. 553 - window lines: The lines displayed in a window: A range of logical 554 lines with wrapping, line breaks, etc. applied. They 555 can only be as long as the width of the window allows, 556 longer lines are wrapped or truncated. 557 - screen lines: The lines of the screen that Nvim uses. Consists of 558 the window lines of all windows, with status lines 559 and the command line added. They can only be as long 560 as the width of the screen allows. When the command 561 line gets longer it wraps and lines are scrolled to 562 make room. 563 564 > 565 buffer lines logical lines window lines screen lines 566 ----------------------------------------------------------------------- 567 1. one 1. one 1. +-- folded 1. +-- folded 568 2. two 2. +-- folded 2. five 2. five 569 3. three 3. five 3. six 3. six 570 4. four 4. six 4. seven 4. seven 571 5. five 5. seven 5. === status line === 572 6. six 6. aaa 573 7. seven 7. bbb 574 8. ccc ccc c 575 1. aaa 1. aaa 1. aaa 9. cc 576 2. bbb 2. bbb 2. bbb 10. ddd 577 3. ccc ccc ccc 3. ccc ccc ccc 3. ccc ccc c 11. ~ 578 4. ddd 4. ddd 4. cc 12. === status line === 579 5. ddd 13. (command line) 580 6. ~ 581 < 582 583 API client ~ 584 All external UIs and remote plugins (as opposed to regular Vim plugins) are 585 "clients" in general; but we call something an "API client" if its purpose is 586 to abstract or wrap the RPC API for the convenience of other applications 587 (just like a REST client or SDK such as boto3 for AWS: you can speak AWS REST 588 using an HTTP client like curl, but boto3 wraps that in a convenient python 589 interface). For example, the Nvim node-client is an API client: 590 https://github.com/neovim/node-client 591 592 593 Host ~ 594 A plugin "host" is both a client (of the Nvim API) and a server (of an 595 external platform, e.g. python). It is a remote plugin that hosts other 596 plugins. 597 598 599 Remote plugin ~ 600 Arbitrary code registered via |:UpdateRemotePlugins|, that runs in a separate 601 process and communicates with Nvim via the |api|. 602 603 604 vim:tw=78:ts=8:et:sw=4:ft=help:norl: