Annotation of GNUtools/emacs/info/vip-1, revision 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.