Annotation of GNUtools/emacs/info/vip-1, revision 1.1.1.1

1.1       root        1: Info file ../info/vip, produced by Makeinfo, -*- Text -*- from input
                      2: file vip.texinfo.
                      3: 
                      4: Distribution
                      5: ************
                      6: 
                      7: Copyright (C) 1987 Masahiko Sato.
                      8: 
                      9: Permission is granted to make and distribute verbatim copies of this
                     10: manual provided the copyright notice and this permission notice are
                     11: preserved on all copies.
                     12: 
                     13: Permission is granted to copy and distribute modified versions of
                     14: this manual under the conditions for verbatim copying, provided that
                     15: the entire resulting derived work is distributed under the terms of a
                     16: permission notice identical to this one.
                     17: 
                     18: Permission is granted to copy and distribute translations of this
                     19: manual into another language, under the same conditions as for
                     20: modified versions.
                     21: 
                     22: 
                     23: 
                     24: File: vip,  Node: Top,  Next: Survey,  Up: (DIR)
                     25: 
                     26: VIP ***
                     27: 
                     28: VIP is a Vi emulating package written in Emacs Lisp.  VIP implements
                     29: most Vi commands including Ex commands.  It is therefore hoped that
                     30: this package will enable you to do Vi style editing under the
                     31: powerful GNU Emacs environment.  This info file describes the usage
                     32: of VIP assuming that you are fairly accustomed to Vi but not so much
                     33: with Emacs.  Also we will concentrate mainly on differences from Vi,
                     34: especially features unique to VIP.
                     35: 
                     36: It is recommended that you read nodes on survey and on customization
                     37: before you start using VIP.  Other nodes may be visited as needed.
                     38: 
                     39: Comments and bug reports are welcome.  Please send messages to
                     40: `[email protected]' if you are outside of Japan and to
                     41: `[email protected]' if you are in Japan.
                     42: 
                     43: * Menu:
                     44: 
                     45: * Survey::             A survey of VIP.
                     46: * Vi Commands::                Details of Vi commands.
                     47: * Ex Commands::                Details of Ex commands.
                     48: * Customization::      How to customize VIP.
                     49: 
                     50:  
                     51: 
                     52: File: vip,  Node: Survey,  Next: Basic Concepts,  Prev: Top,  Up: Top
                     53: 
                     54: A Survey of VIP
                     55: ***************
                     56: 
                     57: In this chapter we describe basics of VIP with emphasis on the
                     58: features not found in Vi and on how to use VIP under GNU Emacs.
                     59: 
                     60: * Menu:
                     61: 
                     62: * Basic Concepts::     Basic concepts in Emacs.
                     63: * Loading VIP::                How to load VIP automatically.
                     64: * Modes in VIP::       VIP has three modes, which are orthogonal to modes
                     65:                        in Emacs.
                     66: * Differences from Vi:: Differences of VIP from Vi is explained.
                     67: 
                     68:  
                     69: 
                     70: File: vip,  Node: Basic Concepts,  Next: Loading VIP,  Prev: Survey,  Up: Survey
                     71: 
                     72: Basic Concepts
                     73: ==============
                     74: 
                     75: We begin by explaining some basic concepts of Emacs.  These concepts
                     76: are explained in more detail in the GNU Emacs Manual.
                     77: 
                     78: Conceptually, a "buffer" is just a string of ASCII characters and two
                     79: special characters PNT ("point") and MRK ("mark") such that the
                     80: character PNT occurs exactly once and MRK occurs at most once.  The
                     81: "text" of a buffer is obtained by deleting the occurrences of PNT and
                     82: MRK.  If, in a buffer, there is a character following PNT then we say
                     83: that point is "looking at" the character; otherwise we say that point
                     84: is "at the end of buffer".  PNT and MRK are used to indicate
                     85: positions in a buffer and they are not part of the text of the
                     86: buffer.  If a buffer contains a MRK then the text between MRK and PNT
                     87: is called the "region" of the buffer.
                     88: 
                     89: Emacs provides (multiple) "windows" on the screen, and you can see
                     90: the content of a buffer through the window associated with the
                     91: buffer.  The cursor of the screen is always positioned on the
                     92: character after PNT.
                     93: 
                     94: A "keymap" is a table that records the bindings between characters
                     95: and command functions.  There is the "global keymap" common to all
                     96: the buffers.  Each buffer has its "local keymap" that determines the
                     97: "mode" of the buffer.  Local keymap overrides global keymap, so that
                     98: if a function is bound to some key in the local keymap then that
                     99: function will be executed when you type the key.  If no function is
                    100: bound to a key in the local map, however, the function bound to the
                    101: key in the global map becomes in effect.
                    102: 
                    103: 
                    104: 
                    105: File: vip,  Node: Loading VIP,  Next: Modes in VIP,  Prev: Basic Concepts,  Up: Survey
                    106: 
                    107: Loading VIP
                    108: ===========
                    109: 
                    110: The recommended way to load VIP automatically is to include the line:
                    111: 
                    112:      (load "vip")
                    113: 
                    114: in your `.emacs' file.  The `.emacs' file is placed in your home
                    115: directory and it will be executed every time you invoke Emacs.  If
                    116: you wish to be in vi mode whenver Emacs starts up, you can include
                    117: the following line in your `.emacs' file instead of the above line:
                    118: 
                    119:      (setq term-setup-hook 'vip-mode)
                    120: 
                    121: (*Note Vi Mode::, for the explanation of vi mode.)
                    122: 
                    123: Even if your `.emacs' file does not contain any of the above lines,
                    124: you can load VIP and enter vi mode by typing the following from
                    125: within Emacs.
                    126: 
                    127:      M-x vip-mode
                    128: 
                    129: 
                    130: 
                    131: File: vip,  Node: Modes in VIP,  Next: Emacs Mode,  Prev: Loading VIP,  Up: Survey
                    132: 
                    133: Modes in VIP
                    134: ============
                    135: 
                    136: Loading VIP has the effect of globally binding `C-z' (`Control-z') to
                    137: the function `vip-change-mode-to-vi'. The default binding of `C-z' in
                    138: GNU Emacs is `suspend-emacs', but, you can also call `suspend-emacs'
                    139: by typing `C-x C-z'.  Other than this, all the key bindings of Emacs
                    140: remain the same after loading VIP.
                    141: 
                    142: Now, if you hit `C-z', the function `vip-change-mode-to-vi' will be
                    143: called and you will be in "vi mode".  (Some major modes may locally
                    144: bind `C-z' to some special functions.  In such cases, you can call
                    145: `vip-change-mode-to-vi' by `execute-extended-command' which is
                    146: invoked by `M-x'.  Here `M-x' means `Meta-x', and if your terminal
                    147: does not have a META key you can enter it by typing `ESC x'.  The
                    148: same effect can also be achieve by typing `M-x vip-mode'.)
                    149: 
                    150: You can observe the change of mode by looking at the "mode line". 
                    151: For instance, if the mode line is:
                    152: 
                    153:      -----Emacs: *scratch*              (Lisp Interaction)----All------------
                    154: 
                    155: then it will change to:
                    156: 
                    157:      -----Vi:    *scratch*              (Lisp Interaction)----All------------
                    158: 
                    159: Thus the word `Emacs' in the mode line will change to `Vi'.
                    160: 
                    161: You can go back to the original "emacs mode" by typing `C-z' in vi
                    162: mode.  Thus `C-z' toggles between these two modes.
                    163: 
                    164: Note that modes in VIP exist orthogonally to modes in Emacs.  This
                    165: means that you can be in vi mode and at the same time, say, shell mode.
                    166: 
                    167: Vi mode corresponds to Vi's command mode.  From vi mode you can enter
                    168: "insert mode" (which corresponds to Vi's insert mode) by usual Vi
                    169: command keys like `i', `a', `o' ... etc.
                    170: 
                    171: In insert mode, the mode line will look like this:
                    172: 
                    173:      -----Insert *scratch*              (Lisp Interaction)----All------------
                    174: 
                    175: You can exit from insert mode by hitting ESC key as you do in Vi.
                    176: 
                    177: That VIP has three modes may seem very complicated, but in fact it is
                    178: not so.  VIP is implemented so that you can do most editing remaining
                    179: only in the two modes for Vi (that is vi mode and insert mode).
                    180: 
                    181: The figure below shows the transition of three modes in VIP.
                    182: 
                    183: 
                    184:      
                    185:                      === C-z ==>          == i,o ... ==>
                    186:      emacs mode             vi mode                 insert mode
                    187:                 <== X-z ===          <=== ESC ====
                    188: 
                    189: * Menu:
                    190: 
                    191: * Emacs Mode::         This is the mode you should know better.
                    192: * Vi Mode::            Vi commands are executed in this mode.
                    193: * Insert Mode::                You can enter text, and also can do editing if you
                    194:                        know enough Emacs commands.
                    195: 
                    196:  
                    197: 
                    198: File: vip,  Node: Emacs Mode,  Next: Vi Mode,  Prev: Modes in VIP,  Up: Modes in VIP
                    199: 
                    200: Emacs Mode
                    201: ----------
                    202: 
                    203: You will be in this mode just after you loaded VIP.  You can do all
                    204: normal Emacs editing in this mode.  Note that the key `C-z' is
                    205: globally bound to `vip-change-mode-to-vi'.  So, if you type `C-z' in
                    206: this mode then you will be in vi mode.
                    207: 
                    208: 
                    209: 
                    210: File: vip,  Node: Vi Mode,  Next: Insert Mode,  Prev: Emacs Mode,  Up: Modes in VIP
                    211: 
                    212: Vi Mode
                    213: -------
                    214: 
                    215: This mode corresponds to Vi's command mode.  Most Vi commands work as
                    216: they do in Vi.  You can go back to emacs mode by typing `C-z'.  You
                    217: can enter insert mode, just as in Vi, by typing `i', `a' etc.
                    218: 
                    219: 
                    220: 
                    221: File: vip,  Node: Insert Mode,  Next: Differences from Vi,  Prev: Vi Mode,  Up: Modes in VIP
                    222: 
                    223: Insert Mode
                    224: -----------
                    225: 
                    226: The key bindings in this mode is the same as in the emacs mode except
                    227: for the following 4 keys.  So, you can move around in the buffer and
                    228: change its content while you are in insert mode.
                    229: 
                    230: `ESC'
                    231:      This key will take you back to vi mode.
                    232: 
                    233: `C-h'
                    234:      Delete previous character.
                    235: 
                    236: `C-w'
                    237:      Delete previous word.
                    238: 
                    239: `C-z'
                    240:      Typing this key has the same effect as typing ESC in emacs mode.
                    241:      Thus typing `C-z x' in insert mode will have the same effect as
                    242:      typing `ESC x' in emacs mode.
                    243: 
                    244: 
                    245: 
                    246: File: vip,  Node: Differences from Vi,  Next: Undoing,  Prev: Insert Mode,  Up: Survey
                    247: 
                    248: Differences from Vi
                    249: ===================
                    250: 
                    251: The major differences from Vi are explained below.
                    252: 
                    253: * Menu:
                    254: 
                    255: * Undoing::            You can undo more in VIP.
                    256: * Changing::           Commands for changing the text.
                    257: * Searching::          Search commands.
                    258: * z Command::          You can now use zH, zM and zL as well as z- etc.
                    259: * Counts::             Some Vi commands which do not accept a count now
                    260:                        accept one.
                    261: * Marking::            You can now mark the current point, beginning of
                    262:                        the buffer etc.
                    263: * Region Commands::    You can now give a region as an argument for delete
                    264:                        commands etc.
                    265: * New Commands::       Some new commands not available in Vi are added.
                    266: * New Bindings::       Bindings of some keys are changed for the
                    267:                        convenience of editing under Emacs.
                    268: * Window Commands::    Commands for moving among windows etc.
                    269: * Buffer Commands::    Commands for selecting buffers etc.
                    270: * File Commands::      Commands for visiting files etc.
                    271: * Misc Commands::      Other useful commands.
                    272: 
                    273:  
                    274: 
                    275: File: vip,  Node: Undoing,  Next: Changing,  Prev: Differences from Vi,  Up: Differences from Vi
                    276: 
                    277: Undoing
                    278: -------
                    279: 
                    280: You can repeat undoing by the `.' key.  So, `u' will undo a single
                    281: change, while `u . . .', for instance, will undo 4 previous changes. 
                    282: Undo is undoable as in Vi.  So the content of the buffer will be the
                    283: same before and after `u u'.
                    284: 
                    285: 
                    286: 
                    287: File: vip,  Node: Changing,  Next: Searching,  Prev: Undoing,  Up: Differences from Vi
                    288: 
                    289: Changing
                    290: --------
                    291: 
                    292: Some commands which change a small number of characters are executed
                    293: slightly differently.  Thus, if point is at the beginning of a word
                    294: `foo' and you wished to change it to `bar' by typing `c w', then VIP
                    295: will prompt you for a new word in the minibuffer by the prompt `foo
                    296: => '.  You can then enter `bar' followed by RET or ESC to complete
                    297: the command.  Before you enter RET or ESC you can abort the command
                    298: by typing `C-g'.  In general, you can abort a partially formed
                    299: command by typing `C-g'.
                    300: 
                    301: 
                    302: 
                    303: File: vip,  Node: Searching,  Next: z Command,  Prev: Changing,  Up: Differences from Vi
                    304: 
                    305: Searching
                    306: ---------
                    307: 
                    308: As in Vi, searching is done by `/' and `?'.  The string will be
                    309: searched literally by default.  To invoke a regular expression
                    310: search, first execute the search command `/' (or `?') with empty
                    311: search string.  (I.e, type `/' followed by RET.) A search for empty
                    312: string will toggle the search mode between vanilla search and regular
                    313: expression search.  You cannot give an offset to the search string. 
                    314: (It is a limitation.)  By default, search will wrap around the buffer
                    315: as in Vi.  You can change this by rebinding the variable
                    316: `vip-search-wrap-around'.  *Note Customization::, for how to do this.
                    317: 
                    318: 
                    319: 
                    320: File: vip,  Node: z Command,  Next: Counts,  Prev: Searching,  Up: Differences from Vi
                    321: 
                    322: z Command
                    323: ---------
                    324: 
                    325: For those of you who cannot remember which of `z' followed by RET,
                    326: `.' and `-' do what.  You can also use `z' followed by `H', `M' and
                    327: `L' to place the current line in the Home (Middle, and Last) line of
                    328: the window.
                    329: 
                    330: 
                    331: 
                    332: File: vip,  Node: Counts,  Next: Marking,  Prev: z Command,  Up: Differences from Vi
                    333: 
                    334: Counts
                    335: ------
                    336: 
                    337: Some Vi commands which do not accept a count now accept one
                    338: 
                    339: `p'
                    340: `P'
                    341:      Given counts, text will be yanked (in Vi's sense) that many
                    342:      times.  Thus `3 p' is the same as `p p p'.
                    343: 
                    344: `o'
                    345: `O'
                    346:      Given counts, that many copies of text will be inserted. Thus `o
                    347:      a b c ESC' will insert 3 lines of `abc' below the current line.
                    348: 
                    349: `/'
                    350: `?'
                    351:      Given a count N, N-th occurrence will be searched.
                    352: 
                    353: 
                    354: 
                    355: File: vip,  Node: Marking,  Next: Region Commands,  Prev: Counts,  Up: Differences from Vi
                    356: 
                    357: Marking
                    358: -------
                    359: 
                    360: Typing an `m' followed by a lower case character CH marks the point
                    361: to the register named CH as in Vi.  In addition to these, we have
                    362: following key bindings for marking.
                    363: 
                    364: `m <'
                    365:      Set mark at the beginning of buffer.
                    366: 
                    367: `m >'
                    368:      Set mark at the end of buffer.
                    369: 
                    370: `m .'
                    371:      Set mark at point (and push old mark on mark ring).
                    372: 
                    373: `m ,'
                    374:      Jump to mark (and pop mark off the mark ring).
                    375: 
                    376: 
                    377: 
                    378: File: vip,  Node: Region Commands,  Next: New Commands,  Prev: Marking,  Up: Differences from Vi
                    379: 
                    380: Region Commands
                    381: ---------------
                    382: 
                    383: Vi operators like `d', `c' etc. are usually used in combination with
                    384: motion commands.  It is now possible to use current region as the
                    385: argument to these operators.  (A "region" is a part of buffer
                    386: delimited by point and mark.)  The key `r' is used for this purpose. 
                    387: Thus `d r' will delete the current region.  If `R' is used instead of
                    388: `r' the region will first be enlarged so that it will become the
                    389: smallest region containing the original region and consisting of
                    390: whole lines.  Thus `m . d R' will have the same effect as `d d'.
                    391: 
                    392: 
                    393: 
                    394: File: vip,  Node: New Commands,  Next: New Bindings,  Prev: Region Commands,  Up: Differences from Vi
                    395: 
                    396: Some New Commands
                    397: -----------------
                    398: 
                    399: Note that the keys below (except for `R') are not used in Vi.
                    400: 
                    401: `C-a'
                    402:      Move point to the beginning of line.
                    403: 
                    404: `C-n'
                    405:      If you have two or more windows in the screen, this key will
                    406:      move point to the next window.
                    407: 
                    408: `C-o'
                    409:      Insert a newline and leave point before it, and then enter
                    410:      insert mode.
                    411: 
                    412: `C-r'
                    413:      Backward incremental search.
                    414: 
                    415: `C-s'
                    416:      Forward incremental search.
                    417: 
                    418: `C-c'
                    419: `C-x'
                    420: `ESC'
                    421:      These keys will exit from vi mode and return to emacs mode
                    422:      temporarily.  If you hit one of these keys, Emacs will be in
                    423:      emacs mode and will believe that you hit that key in emacs mode.
                    424:      For example, if you hit `C-x' followed by `2', then the current
                    425:      window will be split into 2 and you will be in vi mode again.
                    426: 
                    427: `\'
                    428:      Escape to emacs mode.  Hitting `\' will take you to emacs mode,
                    429:      and you can execute a single Emacs command.  After executing the
                    430:      Emacs command you will be in vi mode again.  You can give a
                    431:      count before typing `\'.  Thus `5 \ *', as well as `\ C-u 5 *',
                    432:      will insert `*****' before point.  Similarly `1 0 \ C-p' will
                    433:      move the point 10 lines above the current line.
                    434: 
                    435: `K'
                    436:      Kill current buffer if it is not modified.  Useful when you
                    437:      selected a buffer which you did not want.
                    438: 
                    439: `Q'
                    440: `R'
                    441:      `Q' is for query replace and `R' is for replace.  By default,
                    442:      string to be replaced are treated literally.  If you wish to do
                    443:      a regular expression replace, first do replace with empty string
                    444:      as the string to be replaced.  In this way, you can toggle
                    445:      between vanilla and regular expression replacement.
                    446: 
                    447: `v'
                    448: `V'
                    449:      These keys are used to Visit files.  `v' will switch to a buffer
                    450:      visiting file whose name can be entered in the minibuffer. `V'
                    451:      is similar, but will use window different from the current window.
                    452: 
                    453: `#'
                    454:      If followed by a certain character CH, it becomes an operator
                    455:      whose argument is the region determined by the motion command
                    456:      that follows.  Currently, CH can be one of `c', `C', `g', `q'
                    457:      and `s'.
                    458: 
                    459: `# c'
                    460:      Change upper case characters in the region to lower case
                    461:      (`downcase-region').
                    462: 
                    463: `# C'
                    464:      Change lower case characters in the region to upper case. For
                    465:      instance, `# C 3 w' will capitalize 3 words from the current
                    466:      point (`upcase-region').
                    467: 
                    468: `# g'
                    469:      Execute last keyboard macro for each line in the region
                    470:      (`vip-global-execute').
                    471: 
                    472: `# q'
                    473:      Insert specified string at the beginning of each line in the
                    474:      region (`vip-quote-region').
                    475: 
                    476: `# s'
                    477:      Check spelling of words in the region (`spell-region').
                    478: 
                    479: `*'
                    480:      Call last keyboard macro.
                    481: 
                    482: 
                    483: 
                    484: File: vip,  Node: New Bindings,  Next: Window Commands,  Prev: New Commands,  Up: Differences from Vi
                    485: 
                    486: New Key Bindings
                    487: ----------------
                    488: 
                    489: In VIP the meanings of some keys are entirely different from Vi. 
                    490: These key bindings are done deliberately in the hope that editing
                    491: under Emacs will become easier.  It is however possible to rebind
                    492: these keys to functions which behave similarly as in Vi.  *Note
                    493: Customizing Key Bindings::, for details.
                    494: 
                    495: `C-g'
                    496: `g'
                    497:      In Vi, `C-g' is used to get information about the file
                    498:      associated to the current buffer.  Here, `g' will do that, and
                    499:      `C-g' is used to abort a command (this is for compatibility with
                    500:      emacs mode.)
                    501: 
                    502: `SPC'
                    503: `RET'
                    504:      Now these keys will scroll up and down the text of current window.
                    505:      Convenient for viewing the text.
                    506: 
                    507: `s'
                    508: `S'
                    509:      They are used to switch to a specified buffer.  Useful for
                    510:      switching to already existing buffer since buffer name
                    511:      completion is provided.  Also a default buffer will be given as
                    512:      part of the prompt, to which you can switch by just typing RET
                    513:      key.  `s' is used to select buffer in the current window, while
                    514:      `S' selects buffer in another window.
                    515: 
                    516: `C'
                    517: `X'
                    518:      These keys will exit from vi mode and return to emacs mode
                    519:      temporarily.  If you type `C' (`X'), Emacs will be in emacs mode
                    520:      and will believe that you have typed `C-c' (`C-x', resp.) in
                    521:      emacs mode. Moreover, if the following character you type is an
                    522:      upper case letter, then Emacs will believe that you have typed
                    523:      the corresponding control character.  You will be in vi mode
                    524:      again after the command is executed.  For example, typing `X S'
                    525:      in vi mode is the same as typing `C-x C-s' in emacs mode.  You
                    526:      get the same effect by typing `C-x C-s' in vi mode, but the idea
                    527:      here is that you can execute useful Emacs commands without
                    528:      typing control characters. For example, if you hit `X' (or
                    529:      `C-x') followed by `2', then the current window will be split
                    530:      into 2 and you will be in vi mode again.
                    531: 
                    532: In addition to these, `ctl-x-map' is slightly modified:
                    533: 
                    534: `X 3'
                    535: `C-x 3'
                    536:      This is equivalent to `C-x 1 C-x 2' (1 + 2 = 3).
                    537: 
                    538: 
                    539: 
                    540: File: vip,  Node: Window Commands,  Next: Buffer Commands,  Prev: New Bindings,  Up: Differences from Vi
                    541: 
                    542: Window Commands
                    543: ---------------
                    544: 
                    545: In this and following subsections, we give a summary of key bindings
                    546: for basic functions related to windows, buffers and files.
                    547: 
                    548: `C-n'
                    549:      Switch to next window.
                    550: 
                    551: `X 1'
                    552: `C-x 1'
                    553:      Delete other windows.
                    554: 
                    555: `X 2'
                    556: `C-x 2'
                    557:      Split current window into two windows.
                    558: 
                    559: `X 3'
                    560: `C-x 3'
                    561:      Show current buffer in two windows.
                    562: 
                    563: 
                    564: 
                    565: File: vip,  Node: Buffer Commands,  Next: File Commands,  Prev: Window Commands,  Up: Differences from Vi
                    566: 
                    567: Buffer Commands
                    568: ---------------
                    569: 
                    570: `s'
                    571:      Switch to the specified buffer in the current window
                    572:      (`vip-switch-to-buffer').
                    573: 
                    574: `S'
                    575:      Switch to the specified buffer in another window
                    576:      (`vip-switch-to-buffer-other-window').
                    577: 
                    578: `K'
                    579:      Kill the current buffer if it is not modified.
                    580: 
                    581: `X S'
                    582: `C-x C-s'
                    583:      Save the current buffer in the file associated to the buffer.
                    584: 
                    585: 
                    586: 
                    587: File: vip,  Node: File Commands,  Next: Misc Commands,  Prev: Buffer Commands,  Up: Differences from Vi
                    588: 
                    589: File Commands
                    590: -------------
                    591: 
                    592: `v'
                    593:      Visit specified file in the current window.
                    594: 
                    595: `V'
                    596:      Visit specified file in another window.
                    597: 
                    598: `X W'
                    599: `C-x C-w'
                    600:      Write current buffer into the specified file.
                    601: 
                    602: `X I'
                    603: `C-x C-i'
                    604:      Insert specified file at point.
                    605: 
                    606: 
                    607: 
                    608: File: vip,  Node: Misc Commands,  Next: Vi Commands,  Prev: File Commands,  Up: Differences from Vi
                    609: 
                    610: Miscellaneous Commands
                    611: ----------------------
                    612: 
                    613: `X ('
                    614: `C-x ('
                    615:      Start remembering keyboard macro.
                    616: 
                    617: `X )'
                    618: `C-x )'
                    619:      Finish remembering keyboard macro.
                    620: 
                    621: `*'
                    622:      Call last remembered keyboard macro.
                    623: 
                    624: `X Z'
                    625: `C-x C-z'
                    626:      Suspend Emacs.
                    627: 
                    628: `Z Z'
                    629:      Exit Emacs.
                    630: 
                    631: `Q'
                    632:      Query replace.
                    633: 
                    634: `R'
                    635:      Replace.
                    636: 
                    637: 
                    638: 
                    639: File: vip,  Node: Vi Commands,  Next: Numeric Arguments,  Prev: Misc Commands,  Up: Top
                    640: 
                    641: Vi Commands
                    642: ***********
                    643: 
                    644: This chapter describes Vi commands other than Ex commands implemented
                    645: in VIP.  Except for the last section which discusses insert mode, all
                    646: the commands described in this chapter are to be used in vi mode.
                    647: 
                    648: * Menu:
                    649: 
                    650: * Numeric Arguments::  Many commands accept numeric arguments
                    651: * Important Keys::     Some very important keys.
                    652: * Buffers and Windows::        Commands for handling buffers and windows.
                    653: * Files::              Commands for handling files.
                    654: * Viewing the Buffer:: How you can view the current buffer.
                    655: * Mark Commands::      Marking positions in a buffer.
                    656: * Motion Commands::    Commands for moving point.
                    657: * Modifying Commands:: Commands for modifying the buffer.
                    658: 
                    659:  
                    660: 
                    661: File: vip,  Node: Numeric Arguments,  Next: Important Keys,  Prev: Vi Commands,  Up: Vi Commands
                    662: 
                    663: Numeric Arguments
                    664: =================
                    665: 
                    666: Most Vi commands accept a "numeric argument" which can be supplied as
                    667: a prefix to the commands.  A numeric argument is also called a "count".
                    668: In many cases, if a count is given, the command is executed that many
                    669: times.  For instance, `5 d d' deletes 5 lines while simple `d d'
                    670: deletes a line.  In this manual the metavariable N will denote a count.
                    671: 
                    672: 
                    673: 
                    674: File: vip,  Node: Important Keys,  Next: Buffers and Windows,  Prev: Numeric Arguments,  Up: Vi Commands
                    675: 
                    676: Important Keys
                    677: ==============
                    678: 
                    679: The keys `C-g' and `C-l' are unique in that their associated
                    680: functions are the same in any of emacs, vi and insert mode.
                    681: 
                    682: `C-g'
                    683:      Quit.  Cancel running or partially typed command
                    684:      (`keyboard-quit').
                    685: 
                    686: `C-l'
                    687:      Clear the screen and reprint everything (`recenter').
                    688: 
                    689: In Emacs many commands are bound to the key strokes that start with
                    690: `C-x', `C-c' and ESC.  These commands can be accessed from vi mode as
                    691: easily as from emacs mode.
                    692: 
                    693: `C-x'
                    694: `C-c'
                    695: `ESC'
                    696:      Typing one of these keys have the same effect as typing it in
                    697:      emacs mode.  Appropriate command will be executed according as
                    698:      the keys you type after it.  You will be in vi mode again after
                    699:      the execution of the command.  For instance, if you type `ESC <'
                    700:      (in vi mode) then the cursor will move to the beginning of the
                    701:      buffer and you will still be in vi mode.
                    702: 
                    703: `C'
                    704: `X'
                    705:      Typing one of these keys have the effect of typing the
                    706:      corresponding control character in emacs mode.  Moreover, if you
                    707:      type an upper case character following it, that character will
                    708:      also be translated to the corresponding control character.  Thus
                    709:      typing `X W' in vi mode is the same as typing `C-x C-w' in emacs
                    710:      mode.  You will be in vi mode again after the execution of a
                    711:      command.
                    712: 
                    713: `\'
                    714:      Escape to emacs mode.  Hitting the `\' key will take you to
                    715:      emacs mode, and you can execute a single Emacs command.  After
                    716:      executing the Emacs command you will be in vi mode again.  You
                    717:      can give a count before typing `\'.  Thus `5 \ +', as well as `\
                    718:      C-u 5 +', will insert `+++++' before point.
                    719: 
                    720: 
                    721: 
                    722: File: vip,  Node: Buffers and Windows,  Next: Files,  Prev: Important Keys,  Up: Vi Commands
                    723: 
                    724: Buffers and Windows
                    725: ===================
                    726: 
                    727: In Emacs the text you edit is stored in a "buffer".  See GNU Emacs
                    728: Manual, for details.  There is always one "selected" buffer which is
                    729: called the "current buffer".
                    730: 
                    731: You can see the contents of buffers through "windows" created by Emacs.
                    732: When you have multiple windows on the screen only one of them is
                    733: selected.  Each buffer has a unique name, and each window has a mode
                    734: line which shows the name of the buffer associated with the window
                    735: and other information about the status of the buffer.  You can change
                    736: the format of the mode line, but normally if you see `**' at the
                    737: beginning of a mode line it means that the buffer is "modified".  If
                    738: you write out the content of the buffer to a file, then the buffer
                    739: will become not modified.  Also if you see `%%' at the beginning of
                    740: the mode line, it means that the file associated with the buffer is
                    741: write protected.
                    742: 
                    743: We have the following commands related to windows and buffers.
                    744: 
                    745: `C-n'
                    746:      Move cursor to the next-window (`vip-next-window').
                    747: 
                    748: `X 1'
                    749:      Delete other windows and make the selected window fill the screen 
                    750:      (`delete-other-windows').
                    751: 
                    752: `X 2'
                    753:      Split current window into two windows (`split-window-vertically').
                    754: 
                    755: `X 3'
                    756:      Show current buffer in two windows.
                    757: 
                    758: `s BUFFER RET'
                    759:      Select or create a buffer named BUFFER (`vip-switch-to-buffer').
                    760: 
                    761: `S BUFFER RET'
                    762:      Similar but select a buffer named BUFFER in another window 
                    763:      (`vip-switch-to-buffer-other-window').
                    764: 
                    765: `K'
                    766:      Kill the current buffer if it is not modified or if it is not
                    767:      associated with a file 
                    768:      (`vip-kill-buffer').
                    769: 
                    770: `X B'
                    771:      List the existing buffers (`list-buffers').
                    772: 
                    773: As "buffer name completion" is provided, you have only to type in
                    774: initial substring of the buffer name which is sufficient to identify
                    775: it among names of existing buffers.  After that, if you hit TAB the
                    776: rest of the buffer name will be supplied by the system, and you can
                    777: confirm it by RET.  The default buffer name to switch to will also be
                    778: prompted, and you can select it by giving a simple RET.  See GNU
                    779: Emacs Manual for details of completion.
                    780: 
                    781: 
                    782: 
                    783: File: vip,  Node: Files,  Next: Viewing the Buffer,  Prev: Buffers and Windows,  Up: Vi Commands
                    784: 
                    785: Files
                    786: =====
                    787: 
                    788: We have the following commands related to files.  They are used to
                    789: visit, save and insert files.
                    790: 
                    791: `v FILE RET'
                    792:      Visit specified file in the current window (`vip-find-file').
                    793: 
                    794: `V FILE RET'
                    795:      Visit specified file in another window
                    796:      (`vip-find-file-other-window').
                    797: 
                    798: `X S'
                    799:      Save current buffer to the file associated with the buffer.  If
                    800:      no file is associated with the buffer, the name of the file to
                    801:      write out the content of the buffer will be asked in the
                    802:      minibuffer.
                    803: 
                    804: `X W FILE RET'
                    805:      Write current buffer into a specified file.
                    806: 
                    807: `X I FILE RET'
                    808:      Insert a specified file at point.
                    809: 
                    810: `g'
                    811:      Give information on the file associated with the current buffer.
                    812:      Tell you the name of the file associated with the buffer, the
                    813:      line number of the current point and total line numbers in the
                    814:      buffer.  If no file is associated with the buffer, this fact
                    815:      will be indicated by the null file name `""'.
                    816: 
                    817: In Emacs, you can edit a file by "visiting" it.  If you wish to visit
                    818: a file in the current window, you can just type `v'.  Emacs maintains
                    819: the "default directory" which is specific to each buffer.  Suppose,
                    820: for instance, that the default directory of the current buffer is
                    821: `/usr/masahiko/lisp/'.  Then you will get the following prompt in the
                    822: minibuffer.
                    823: 
                    824:      visit file: /usr/masahiko/lisp/
                    825: 
                    826: If you wish to visit, say, `vip.el' in this directory, then you can
                    827: just type `vip.el' followed by RET.  If the file `vip.el' already
                    828: exists in the directory, Emacs will visit that file, and if not, the
                    829: file will be created.  Emacs will use the file name (`vip.el', in
                    830: this case) as the name of the buffer visiting the file.  In order to
                    831: make the buffer name unique, Emacs may append `<2>', `<3>' etc., to
                    832: the buffer name.  As the "file name completion" is provided here, you
                    833: can sometime save typing.  For instance, suppose there is only one
                    834: file in the default directory whose name starts with `v', that is
                    835: `vip.el'.  Then if you just type `v TAB' then it will be completed to
                    836: `vip.el'.  Thus, in this case, you just have to type `v v TAB RET' to
                    837: visit `/usr/masahiko/lisp/vip.el'.  Continuing the example, let us
                    838: now suppose that you wished to visit the file
                    839: `/usr/masahiko/man/vip.texinfo'.  Then to the same prompt which you
                    840: get after you typed `v', you can enter
                    841: `/usr/masahiko/man/vip.texinfo' or `../man/vip.texinfo' followed by
                    842: RET.
                    843: 
                    844: Use `V' instead of `v', if you wish to visit a file in another window.
                    845: 
                    846: You can verify which file you are editing by typing `g'.  (You can
                    847: also type `X B' to get nformation on other buffers too.)  If you type
                    848: `g' you will get an information like below in the echo area:
                    849: 
                    850:      "/usr/masahiko/man/vip.texinfo" line 921 of 1949
                    851: 
                    852: After you edited the buffer (`vip.texinfo', in our example) for a
                    853: while, you may wish to save it in a file.  If you wish to save it in
                    854: the file associated with the buffer (`/usr/masahiko/man/vip.texinfo',
                    855: in this case), you can just say `X S'.  If you wish to save it in
                    856: another file, you can type `X W'.  You will then get a similar prompt
                    857: as you get for `v', to which you can enter the file name.
                    858: 
                    859: 
                    860: 
                    861: File: vip,  Node: Viewing the Buffer,  Next: Mark Commands,  Prev: Files,  Up: Vi Commands
                    862: 
                    863: Viewing the Buffer
                    864: ==================
                    865: 
                    866: In this and next section we discuss commands for moving around in the
                    867: buffer.  These command do not change the content of the buffer.  The
                    868: following commands are useful for viewing the content of the current
                    869: buffer.
                    870: 
                    871: `SPC'
                    872: `C-f'
                    873:      Scroll text of current window upward almost full screen.  You
                    874:      can go forward in the buffer by this command (`vip-scroll').
                    875: 
                    876: `RET'
                    877: `C-b'
                    878:      Scroll text of current window downward almost full screen.  You
                    879:      can go backward in the buffer by this command (`vip-scroll-back').
                    880: 
                    881: `C-d'
                    882:      Scroll text of current window upward half screen.  You can go
                    883:      down in the buffer by this command (`vip-scroll-down').
                    884: 
                    885: `C-u'
                    886:      Scroll text of current window downward half screen.  You can go
                    887:      up in the buffer by this command (`vip-scroll-up').
                    888: 
                    889: `C-y'
                    890:      Scroll text of current window upward by one line
                    891:      (`vip-scroll-down-one').
                    892: 
                    893: `C-e'
                    894:      Scroll text of current window downward by one line
                    895:      (`vip-scroll-up-one').
                    896: 
                    897: You can repeat these commands by giving a count.  Thus, `2 SPC' has
                    898: the same effect as `SPC SPC'.
                    899: 
                    900: The following commands reposition point in the window.
                    901: 
                    902: `z H'
                    903: `z RET'
                    904:      Put point on the top (home) line in the window.  So the current
                    905:      line becomes the top line in the window.  Given a count N, point
                    906:      will be placed in the N-th line from top (`vip-line-to-top').
                    907: 
                    908: `z M'
                    909: `z .'
                    910:      Put point on the middle line in the window.  Given a count N,
                    911:      point will be placed in the N-th line from the middle line
                    912:      (`vip-line-to-middle').
                    913: 
                    914: `z L'
                    915: `z -'
                    916:      Put point on the bottom line in the window.  Given a count N,
                    917:      point will be placed in the N-th line from bottom
                    918:      (`vip-line-to-bottom').
                    919: 
                    920: `C-l'
                    921:      Center point in window and redisplay screen (`recenter').
                    922: 
                    923: 
                    924: 
                    925: File: vip,  Node: Mark Commands,  Next: Motion Commands,  Prev: Viewing the Buffer,  Up: Vi Commands
                    926: 
                    927: Mark Commands
                    928: =============
                    929: 
                    930: The following commands are used to mark positions in the buffer.
                    931: 
                    932: `m CH'
                    933:      Store current point in the register CH.  CH must be a lower case
                    934:      character between `a' and `z'.
                    935: 
                    936: `m <'
                    937:      Set mark at the beginning of current buffer.
                    938: 
                    939: `m >'
                    940:      Set mark at the end of current buffer.
                    941: 
                    942: `m .'
                    943:      Set mark at point.
                    944: 
                    945: `m ,'
                    946:      Jump to mark (and pop mark off the mark ring).
                    947: 
                    948: Emacs uses the "mark ring" to store marked positions.  The commands
                    949: `m <', `m >' and `m .' not only set mark but also add it as the
                    950: latest element of the mark ring (replacing the oldest one).  By
                    951: repeating the command ``m ,'' you can visit older and older marked
                    952: positions.  You will eventually be in a loop as the mark ring is a
                    953: ring.
                    954: 
                    955: 
                    956: 
                    957: File: vip,  Node: Motion Commands,  Next: Searching and Replacing,  Prev: Mark Commands,  Up: Vi Commands
                    958: 
                    959: Motion Commands
                    960: ===============
                    961: 
                    962: Commands for moving around in the current buffer are collected here. 
                    963: These commands are used as an `argument' for the delete, change and
                    964: yank commands to be described in the next section.
                    965: 
                    966: `h'
                    967:      Move point backward by one character.  Signal error if point is
                    968:      at the beginning of buffer, but (unlike Vi) do not complain
                    969:      otherwise (`vip-backward-char').
                    970: 
                    971: `l'
                    972:      Move point backward by one character.  Signal error if point is
                    973:      at the end of buffer, but (unlike Vi) do not complain otherwise
                    974:      (`vip-forward-char').
                    975: 
                    976: `j'
                    977:      Move point to the next line keeping the current column.  If
                    978:      point is on the last line of the buffer, a new line will be
                    979:      created and point will move to that line (`vip-next-line').
                    980: 
                    981: `k'
                    982:      Move point to the previous line keeping the current column
                    983:      (`vip-next-line').
                    984: 
                    985: `+'
                    986:      Move point to the next line at the first non-white character. 
                    987:      If point is on the last line of the buffer, a new line will be
                    988:      created and point will move to the beginning of that line
                    989:      (`vip-next-line-at-bol').
                    990: 
                    991: `-'
                    992:      Move point to the previous line at the first non-white character
                    993:      (`vip-previous-line-at-bol').
                    994: 
                    995: If a count is given to these commands, the commands will be repeated
                    996: that many times.
                    997: 
                    998: `0'
                    999:      Move point to the beginning of line (`vip-beginning-of-line').
                   1000: 
                   1001: `^'
                   1002:      Move point to the first non-white character on the line
                   1003:      (`vip-bol-and-skip-white').
                   1004: 
                   1005: `$'
                   1006:      Move point to the end of line (`vip-goto-eol').
                   1007: 
                   1008: `N |'
                   1009:      Move point to the N-th column on the line (`vip-goto-col').
                   1010: 
                   1011: Except for the `|' command, these commands neglect a count.
                   1012: 
                   1013: `w'
                   1014:      Move point forward to the beginning of the next word
                   1015:      (`vip-forward-word').
                   1016: 
                   1017: `W'
                   1018:      Move point forward to the beginning of the next word, where a
                   1019:      "word" is considered as a sequence of non-white characters
                   1020:      (`vip-forward-Word').
                   1021: 
                   1022: `b'
                   1023:      Move point backward to the beginning of a word
                   1024:      (`vip-backward-word').
                   1025: 
                   1026: `B'
                   1027:      Move point backward to the beginning of a word, where a word is
                   1028:      considered as a sequence of non-white characters
                   1029:      (`vip-forward-Word').
                   1030: 
                   1031: `e'
                   1032:      Move point forward to the end of a word (`vip-end-of-word').
                   1033: 
                   1034: `E'
                   1035:      Move point forward to the end of a word, where a word is
                   1036:      considered as a sequence of non-white characters
                   1037:      (`vip-end-of-Word').
                   1038: 
                   1039: Here the meaning of the word `word' for the `w', `b' and `e' commands
                   1040: is determined by the "syntax table" effective in the current buffer. 
                   1041: Each major mode has its syntax mode, and therefore the meaning of a
                   1042: word also changes as the major mode changes.  See GNU Emacs Manual
                   1043: for details of syntax table.
                   1044: 
                   1045: `H'
                   1046:      Move point to the beginning of the home (top) line of the window.
                   1047:      Given a count N, go to the N-th line from top (`vip-window-top').
                   1048: 
                   1049: `M'
                   1050:      Move point to the beginning of the middle line of the window. 
                   1051:      Given a count N, go to the N-th line from the middle line
                   1052:      (`vip-window-middle').
                   1053: 
                   1054: `L'
                   1055:      Move point to the beginning of the lowest (bottom) line of the
                   1056:      window.  Given count, go to the N-th line from bottom
                   1057:      (`vip-window-bottom').
                   1058: 
                   1059: These commands can be used to go to the desired line visible on the
                   1060: screen.
                   1061: 
                   1062: `('
                   1063:      Move point backward to the beginning of the sentence
                   1064:      (`vip-backward-sentence').
                   1065: 
                   1066: `)'
                   1067:      Move point forward to the end of the sentence
                   1068:      (`vip-forward-sentence').
                   1069: 
                   1070: `{'
                   1071:      Move point backward to the beginning of the paragraph
                   1072:      (`vip-backward-paragraph').
                   1073: 
                   1074: `}'
                   1075:      Move point forward to the end of the paragraph
                   1076:      (`vip-forward-paragraph').
                   1077: 
                   1078: A count repeats the effect for these commands.
                   1079: 
                   1080: `G'
                   1081:      Given a count N, move point to the N-th line in the buffer on
                   1082:      the first non-white character.  Without a count, go to the end
                   1083:      of the buffer (`vip-goto-line').
                   1084: 
                   1085: `` `'
                   1086:      Exchange point and mark (`vip-goto-mark').
                   1087: 
                   1088: `` CH'
                   1089:      Move point to the position stored in the register CH.  CH must
                   1090:      be a lower case letter.
                   1091: 
                   1092: `' ''
                   1093:      Exchange point and mark, and then move point to the first
                   1094:      non-white character on the line (`vip-goto-mark-and-skip-white').
                   1095: 
                   1096: `' CH'
                   1097:      Move point to the position stored in the register CH and skip to
                   1098:      the first non-white character on the line.  CH must be a lower
                   1099:      case letter.
                   1100: 
                   1101: `%'
                   1102:      Move point to the matching parenthesis if point is looking at
                   1103:      `(', `)', `{', `}', `[' or `]' 
                   1104:      (`vip-paren-match').
                   1105: 
                   1106: The command `G' mark point before move, so that you can return to the
                   1107: original point by `` `'.  The original point will also be stored in
                   1108: the mark ring.
                   1109: 
                   1110: The following commands are useful for moving points on the line.  A
                   1111: count will repeat the effect.
                   1112: 
                   1113: `f CH'
                   1114:      Move point forward to the character CH on the line.  Signal
                   1115:      error if CH could not be found (`vip-find-char-forward').
                   1116: 
                   1117: `F CH'
                   1118:      Move point backward to the character CH on the line.  Signal
                   1119:      error if CH could not be found (`vip-find-char-backward').
                   1120: 
                   1121: `t CH'
                   1122:      Move point forward upto the character CH on the line.  Signal
                   1123:      error if CH could not be found (`vip-goto-char-forward').
                   1124: 
                   1125: `T CH'
                   1126:      Move point backward upto the character CH on the line.  Signal
                   1127:      error if CH could not be found (`vip-goto-char-backward').
                   1128: 
                   1129: `;'
                   1130:      Repeat previous `f', `t', `F' or `T' command (`vip-repeat-find').
                   1131: 
                   1132: `,'
                   1133:      Repeat previous `f', `t', `F' or `T' command, in the opposite
                   1134:      direction (`vip-repeat-find-opposite').
                   1135: 
                   1136: 
                   1137: 
                   1138: File: vip,  Node: Searching and Replacing,  Next: Modifying Commands,  Prev: Motion Commands,  Up: Vi Commands
                   1139: 
                   1140: Searching and Replacing
                   1141: =======================
                   1142: 
                   1143: Following commands are available for searching and replacing.
                   1144: 
                   1145: `/ STRING RET'
                   1146:      Search the first occurrence of the string STRING forward
                   1147:      starting from point.  Given a count N, the N-th occurrence of
                   1148:      STRING will be searched.  If the variable `vip-re-search' has
                   1149:      value `t' then "regular expression" search is done and the
                   1150:      string matching the regular expression STRING is found.  If you
                   1151:      give an empty string as STRING then the search mode will change
                   1152:      from vanilla search to regular expression search and vice versa
                   1153:      (`vip-search-forward').
                   1154: 
                   1155: `? STRING RET'
                   1156:      Same as `/', except that search is done backward
                   1157:      (`vip-search-backward').
                   1158: 
                   1159: `n'
                   1160:      Search the previous search pattern in the same direction as
                   1161:      before (`vip-search-next').
                   1162: 
                   1163: `N'
                   1164:      Search the previous search pattern in the opposite direction
                   1165:      (`vip-search-Next').
                   1166: 
                   1167: `C-s'
                   1168:      Search forward incrementally.  See GNU Emacs Manual for details
                   1169:      (`isearch-forward').
                   1170: 
                   1171: `C-r'
                   1172:      Search backward incrementally (`isearch-backward').
                   1173: 
                   1174: `R STRING RET NEWSTRING'
                   1175:      There are two modes of replacement, "vanilla" and "regular
                   1176:      expression".  If the mode is vanilla you will get a prompt
                   1177:      `Replace string:', and if the mode is regular expression you
                   1178:      will ge a prompt `Replace regexp:'.  The mode is initially
                   1179:      vanilla, but you can toggle these modes by giving a null string
                   1180:      as STRING.  If the mode is vanilla, this command replaces every
                   1181:      occurrence of STRING with NEWSTRING.  If the mode is regular
                   1182:      expression, STRING is treated as a regular expression and every
                   1183:      string matching the regular expression is replaced with
                   1184:      NEWSTRING (`vip-replace-string').
                   1185: 
                   1186: `Q     STRING RET NEWSTRING'
                   1187:      Same as `R' except that you will be asked form confirmation
                   1188:      before each replacement 
                   1189:      (`vip-query-replace').
                   1190: 
                   1191: `r CH'
                   1192:      Replace the character point is looking at by the character CH. 
                   1193:      Give count, replace that many characters by CH
                   1194:      (`vip-replace-char').
                   1195: 
                   1196: The commands `/' and `?' mark point before move, so that you can
                   1197: return to the original point by `` `'.
                   1198: 
                   1199: 
                   1200: 
                   1201: File: vip,  Node: Modifying Commands,  Next: Delete Commands,  Prev: Searching and Replacing,  Up: Vi Commands
                   1202: 
                   1203: Modifying Commands
                   1204: ==================
                   1205: 
                   1206: In this section, commands for modifying the content of a buffer are
                   1207: described.  These commands affect the region determined by a motion
                   1208: command which is given to the commands as their argument.
                   1209: 
                   1210: We classify motion commands into "point commands" and "line
                   1211: commands".  The point commands are as follows:
                   1212: 
                   1213:      `h', `l', `0', `^', `$', `w', `W', `b', `B', `e', `E', `(', `)', `/', `?', ``', `f', `F', `t', `T', `%', `;', `,'
                   1214: 
                   1215: The line commands are as follows:
                   1216: 
                   1217:      `j', `k', `+', `-', `H', `M', `L', `{', `}', `G', `''
                   1218: 
                   1219: If a point command is given as an argument to a modifying command,
                   1220: the region determined by the point command will be affected by the
                   1221: modifying command. On the other hand, if a line command is given as
                   1222: an argument to a modifying command, the region determined by the line
                   1223: command will be enlarged so that it will become the smallest region
                   1224: properly containing the region and consisting of whole lines (we call
                   1225: this process "expanding the region"), and then the enlarged region
                   1226: will be affected by the modifying command.
                   1227: 
                   1228: * Menu:
                   1229: 
                   1230: * Delete Commands::    Commands for deleting text.
                   1231: * Yank Commands::      Commands for yanking text in Vi's sense.
                   1232: * Put Back Commands::  Commands for putting bake deleted/yanked text.
                   1233: * Change Commands::    Commands for changing text.
                   1234: 
                   1235: 
                   1236: 
                   1237: File: vip,  Node: Delete Commands,  Next: Yank Commands,  Prev: Modifying Commands,  Up: Modifying Commands
                   1238: 
                   1239: Delete Commands
                   1240: ---------------
                   1241: 
                   1242: `d MOTION-COMMAND'
                   1243:      Delete the region determined by the motion command MOTION-COMMAND.
                   1244: 
                   1245: For example, `d $' will delete the region between point and end of
                   1246: current line since `$' is a point command that moves point to end of
                   1247: line.  `d G' will delete the region between the beginning of current
                   1248: line and end of the buffer, since `G' is a line command.  A count
                   1249: given to the command above will become the count for the associated
                   1250: motion command.  Thus, `3 d w' will delete three words.
                   1251: 
                   1252: It is also possible to save the deleted text into a register you
                   1253: specify.  For example, you can say `" t 3 d w' to delete three words
                   1254: and save it to register `t'.  The name of a register is a lower case
                   1255: letter between `a' and `z'.  If you give an upper case letter as an
                   1256: argument to a delete command, then the deleted text will be appended
                   1257: to the content of the register having the corresponding lower case
                   1258: letter as its name.  So, `" T d w' will delete a word and append it
                   1259: to register `t'.  Other modifying commands also accept a register
                   1260: name as their argument, and we will not repeat similar explanations.
                   1261: 
                   1262: We have more delete commands as below.
                   1263: 
                   1264: `d d'
                   1265:      Delete a line.  Given a count N, delete N lines.
                   1266: 
                   1267: `d r'
                   1268:      Delete current region.
                   1269: 
                   1270: `d R'
                   1271:      Expand current region and delete it.
                   1272: 
                   1273: `D'
                   1274:      Delete to the end of a line (`vip-kill-line').
                   1275: 
                   1276: `x'
                   1277:      Delete a character after point.  Given N, delete N characters
                   1278:      (`vip-delete-char').
                   1279: 
                   1280: `DEL'
                   1281:      Delete a character before point.  Given N, delete N characters
                   1282:      (`vip-delete-backward-char').
                   1283: 
                   1284: 
                   1285: 
                   1286: File: vip,  Node: Yank Commands,  Next: Put Back Commands,  Prev: Delete Commands,  Up: Modifying Commands
                   1287: 
                   1288: Yank Commands
                   1289: -------------
                   1290: 
                   1291: Yank commands "yank" a text of buffer into a (usually anonymous)
                   1292: register.  Here the word `yank' is used in Vi's sense.  Thus yank
                   1293: commands do not alter the content of the buffer, and useful only in
                   1294: combination with commands that put back the yanked text into the
                   1295: buffer.
                   1296: 
                   1297: `y MOTION-COMMAND'
                   1298:      Yank the region determined by the motion command MOTION-COMMAND.
                   1299: 
                   1300: For example, `y $' will yank the text between point and the end of
                   1301: line into an anonymous register, while `"c y $' will yank the same
                   1302: text into register `c'.
                   1303: 
                   1304: Use the following command to yank consecutive lines of text.
                   1305: 
                   1306: `y y'
                   1307: `Y'
                   1308:      Yank a line.  Given N, yank N lines (`vip-yank-line').
                   1309: 
                   1310: `y r'
                   1311:      Yank current region.
                   1312: 
                   1313: `y R'
                   1314:      Expand current region and yank it.
                   1315: 
                   1316: 
                   1317: 
                   1318: File: vip,  Node: Put Back Commands,  Next: Change Commands,  Prev: Yank Commands,  Up: Modifying Commands
                   1319: 
                   1320: Put Back Commands
                   1321: -----------------
                   1322: 
                   1323: Deleted or yanked texts can be put back into the buffer by the
                   1324: command below.
                   1325: 
                   1326: `p'
                   1327:      Insert, after the character point is looking at, most recently
                   1328:      deleted/yanked text from anonymous register. Given a register
                   1329:      name argument, the content of the named register will be put
                   1330:      back.  Given a count, the command will be repeated that many
                   1331:      times. This command also checks if the text to put back ends
                   1332:      with a new line character, and if so the text will be put below
                   1333:      the current line (`vip-put-back').
                   1334: 
                   1335: `P'
                   1336:      Insert at point most recently deleted/yanked text from anonymous
                   1337:      register.  Given a register name argument, the content of the
                   1338:      named register will be put back.  Given a count, the command
                   1339:      will be repeated that many times.  This command also checks if
                   1340:      the text to put back ends with a new line character, and if so
                   1341:      the text will be put above the current line rather than at point
                   1342:      (`vip-Put-back').
                   1343: 
                   1344: Thus, `" c p' will put back the content of the register `c' into the
                   1345: buffer.  It is also possible to specify "number register" which is a
                   1346: numeral between `1' and `9'.  If the number register N is specified,
                   1347: N-th previously deleted/yanked text will be put back.  It is an error
                   1348: to specify a number register for the delete/yank commands.
                   1349: 
                   1350: 
                   1351: 
                   1352: File: vip,  Node: Change Commands,  Next: Repeating and Undoing Modifications,  Prev: Put Back Commands,  Up: Modifying Commands
                   1353: 
                   1354: Change Commands
                   1355: ---------------
                   1356: 
                   1357: Most commonly used change command takes the following form.
                   1358: 
                   1359: `c MOTION-COMMAND'
                   1360:      Replace the content of the region determined by the motion
                   1361:      command MOTION-COMMAND by the text you type.  If the motion
                   1362:      command is a point command then you will type the text into
                   1363:      minibuffer, and if the motion command is a line command then the
                   1364:      region will be deleted first and you can insert the text in
                   1365:      INSERT MODE.
                   1366: 
                   1367: For example, if point is at the beginning of a word `foo' and you
                   1368: wish to change it to `bar', you can type `c w'.  Then, as `w' is a
                   1369: point command, you will get the prompt `foo =>' in the minibuffer,
                   1370: for which you can type `b a r RET' to complete the change command.
                   1371: 
                   1372: `c c'
                   1373:      Change a line.  Given a count, that many lines are changed.
                   1374: 
                   1375: `c r'
                   1376:      Change current region.
                   1377: 
                   1378: `c R'
                   1379:      Expand current region and change it.
                   1380: 
                   1381: 
                   1382: 
                   1383: File: vip,  Node: Repeating and Undoing Modifications,  Next: Other Vi Commands,  Prev: Change Commands,  Up: Modifying Commands
                   1384: 
                   1385: Repeating and Undoing Modifications
                   1386: -----------------------------------
                   1387: 
                   1388: VIP records the previous modifying command, so that it is easy to
                   1389: repeat it.  It is also very easy to undo changes made by modifying
                   1390: commands.
                   1391: 
                   1392: `u'
                   1393:      Undo the last change.  You can undo more by repeating undo by
                   1394:      the repeat command `.'.  For example, you can undo 5 previous
                   1395:      changes by typing `u....'.  If you type `uu', then the second
                   1396:      `u' undoes the first undo command (`vip-undo').
                   1397: 
                   1398: `.'
                   1399:      Repeat the last modifying command.  Given count N it becomes the
                   1400:      new count for the repeated command.  Otherwise, the count for
                   1401:      the last modifying command is used again (`vip-repeat').
                   1402: 
                   1403: 
                   1404: 
                   1405: File: vip,  Node: Other Vi Commands,  Next: Commands in Insert Mode,  Prev: Repeating and Undoing Modifications,  Up: Vi Commands
                   1406: 
                   1407: Other Vi Commands
                   1408: =================
                   1409: 
                   1410: Miscellaneous Vi commands are collected here.
                   1411: 
                   1412: `Z Z'
                   1413:      Exit Emacs.  If modified buffers exist, you will be asked
                   1414:      whether you wish to save them or not (`save-buffers-kill-emacs').
                   1415: 
                   1416: `! MOTION-COMMAND FORMAT-COMMAND'
                   1417: `N ! ! FORMAT-COMMAND'
                   1418:      The region determined by the motion command MOTION-COMMAND will
                   1419:      be given to the shell command FORMAT-COMMAND and the region will
                   1420:      be replaced by its output.  If a count is given, it will be
                   1421:      passed to MOTION-COMMAND.  For example, `3!Gsort' will sort the
                   1422:      region between point and the 3rd line.  If `!' is used instead
                   1423:      of MOTION-COMMAND then N lines will be processed by
                   1424:      FORMAT-COMMAND (`vip-command-argument').
                   1425: 
                   1426: `J'
                   1427:      Join two lines.  Given count, join that many lines.  A space
                   1428:      will be inserted at each junction (`vip-join-lines').
                   1429: 
                   1430: `< MOTION-COMMAND'
                   1431: `N < <'
                   1432:      Shift region determined by the motion command MOTION-COMMAND to
                   1433:      left by SHIFT-WIDTH (default is 8).  If `<' is used instead of
                   1434:      MOTION-COMMAND then shift N lines 
                   1435:      (`vip-command-argument').
                   1436: 
                   1437: `> MOTION-COMMAND'
                   1438: `N > >'
                   1439:      Shift region determined by the motion command MOTION-COMMAND to
                   1440:      right by SHIFT-WIDTH (default is 8).  If `<' is used instead of
                   1441:      MOTION-COMMAND then shift N lines 
                   1442:      (`vip-command-argument').
                   1443: 
                   1444: `= MOTION-COMMAND'
                   1445:      Indent region determined by the motion command MOTION-COMMAND. 
                   1446:      If `=' is used instead of MOTION-COMMAND then indent N lines
                   1447:      (`vip-command-argument').
                   1448: 
                   1449: `*'
                   1450:      Call last remembered keyboard macro.
                   1451: 
                   1452: `#'
                   1453:      A new vi operator. *Note New Commands::, for more details.
                   1454: 
                   1455: The following keys are reserved for future extensions, and currently
                   1456: assigned to a function that just beeps (`vip-nil').
                   1457: 
                   1458:      &, @, U, [, ], _, q, ~
                   1459: 
                   1460: VIP uses a special local keymap to interpret key strokes you enter in
                   1461: vi mode.  The following keys are bound to NIL in the keymap. 
                   1462: Therefore, these keys are interpreted by the global keymap of Emacs. 
                   1463: We give below a short description of the functions bound to these
                   1464: keys in the global keymap.  See GNU Emacs Manual for details.
                   1465: 
                   1466: `C-@'
                   1467:      Set mark and push previous mark on mark ring (`set-mark-command').
                   1468: 
                   1469: `TAB'
                   1470:      Indent line for current major mode (`indent-for-tab-command').
                   1471: 
                   1472: `LFD'
                   1473:      Insert a newline, then indent according to mode
                   1474:      (`newline-and-indent').
                   1475: 
                   1476: `C-k'
                   1477:      Kill the rest of the current line; before a newline, kill the
                   1478:      newline.  With prefix argument, kill that many lines from point.
                   1479:      Negative arguments kill lines backward (`kill-line').
                   1480: 
                   1481: `C-l'
                   1482:      Clear the screen and reprint everything (`recenter').
                   1483: 
                   1484: `N C-p'
                   1485:      Move cursor vertically up N lines (`previous-line').
                   1486: 
                   1487: `C-q'
                   1488:      Read next input character and insert it.  Useful for inserting
                   1489:      control characters 
                   1490:      (`quoted-insert').
                   1491: 
                   1492: `C-r'
                   1493:      Search backward incrementally (`isearch-backward').
                   1494: 
                   1495: `C-s'
                   1496:      Search forward incrementally (`isearch-forward').
                   1497: 
                   1498: `N C-t'
                   1499:      Interchange charcters around point, moving forward one
                   1500:      character.  With count N, take character before point and drag
                   1501:      it forward past N other characters.  If no argument and at end
                   1502:      of line, the previous two characters are exchanged
                   1503:      (`transpose-chars').
                   1504: 
                   1505: `N C-v'
                   1506:      Scroll text upward N lines.  If N is not given, scroll near full
                   1507:      screen (`scroll-up').
                   1508: 
                   1509: `C-w'
                   1510:      Kill between point and mark.  The text is save in the kill ring.
                   1511:      The command `P' or `p' can retrieve it from kill ring
                   1512:      (`kill-region').
                   1513: 
                   1514: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.