QUICKREF

*quickref.txt*  For IdeaVIM version 0.12.0.  Last change: 2006 Dec 31


                  IdeaVIM REFERENCE MANUAL    by Rick Maddy

                            Quick reference guide

                                                         *quickref* *Contents*
 tag      subject                        tag      subject       
|Q_ct|  list of help files              |Q_re|  Repeating commands
|Q_lr|  motion: Left-right              |Q_km|  Key mapping
|Q_ud|  motion: Up-down                 |Q_ab|  Abbreviations
|Q_tm|  motion: Text object             |Q_op|  Options
|Q_pa|  motion: Pattern searches        |Q_ur|  Undo/Redo commands
|Q_ma|  motion: Marks                   |Q_et|  External commands
|Q_vm|  motion: Various                 |Q_qf|  Quickfix commands
|Q_ta|  motion: Using tags              |Q_vc|  Various commands
|Q_sc|  Scrolling                       |Q_ce|  Ex: Command-line editing
|Q_in|  insert: Inserting text          |Q_ra|  Ex: Ranges
|Q_ai|  insert: Keys                    |Q_ex|  Ex: Special characters
|Q_ss|  insert: Special keys            |Q_ed|  Editing a file
|Q_di|  insert: Digraphs                |Q_fl|  Using the argument list
|Q_si|  insert: Special inserts         |Q_wq|  Writing and quitting
|Q_de|  change: Deleting text           |Q_st|  Starting VIM
|Q_cm|  change: Copying and moving      |Q_ac|  Automatic commands
|Q_ch|  change: Changing text           |Q_wi|  Multi-window commands
|Q_co|  change: Complex                 |Q_bu|  Buffer list commands
|Q_vi|  Visual mode                     |Q_sy|  Syntax highlighting
|Q_to|  Text objects                    |Q_gu|  GUI commands
                                        |Q_fo|  Folding


N is used to indicate an optional count that can be given before the command.

*Q_lr*          Left-right motions

|h|     N  h            left (also: CTRL-H, <BS>, or <Left> key)
|l|     N  l            right (also: <Space> or <Right> key)
|0|        0            to first character in the line (also: <Home> key)
|^|        ^            to first non-blank character in the line
|$|     N  $            to the last character in the line (N-1 lines lower)
                           (also: <End> key)
|g0|    N  g0           to first character in screen line (differs from "0"
                           when lines wrap)
|g^|    N  g^           to first non-blank character in screen line (differs
                           from "^" when lines wrap)
|g$|    N  g$           to last character in screen line (differs from "$"
                           when lines wrap)
|gm|    N  gm           to middle of the screen line
|bar|   N  |            to column N (default: 1)
|f|     N  f{char}      to the Nth occurrence of {char} to the right
|F|     N  F{char}      to the Nth occurrence of {char} to the left
|t|     N  t{char}      till before the Nth occurrence of {char} to the right
|T|     N  T{char}      till before the Nth occurrence of {char} to the left
|;|     N  ;            repeat the last "f", "F", "t", or "T" N times
|,|     N  ,            repeat the last "f", "F", "t", or "T" N times in
                           opposite direction

*Q_ud*          Up-down motions

|k|     N  k            up N lines (also: CTRL-P and <Up>)
|j|     N  j            down N lines (also: CTRL-J, CTRL-N, <NL>, and <Down>)
|-|     N  -            up N lines, on the first non-blank character
|+|     N  +            down N lines, on the first non-blank character (also:
                           CTRL-M and <CR>)
|_|     N  _            down N-1 lines, on the first non-blank character
|G|     N  G            goto line N (default: last line), on the first
                           non-blank character
|gg|    N  gg           goto line N (default: first line), on the first
                           non-blank character
|N%|    N  %            goto line N percentage down in the file.  N must be
                           given, otherwise it is the |%| command.
|gk|    N  gk           up N screen lines (differs from "k" when line wraps)
|gj|    N  gj           down N screen lines (differs from "j" when line wraps)

*Q_tm*          Text object motions

|w|     N  w            N words forward
|W|     N  W            N blank-separated |WORD|s forward
|e|     N  e            forward to the end of the Nth word
|E|     N  E            forward to the end of the Nth blank-separated |WORD|
|b|     N  b            N words backward
|B|     N  B            N blank-separated |WORD|s backward
|ge|    N  ge           backward to the end of the Nth word
|gE|    N  gE           backward to the end of the Nth blank-separated |WORD|

|)|     N  )            N sentences forward
|(|     N  (            N sentences backward
|}|     N  }            N paragraphs forward
|{|     N  {            N paragraphs backward
|[b|    N  [b           N camel words backward
|[w|    N  [w           N camel words forward
|]b|    N  ]b           backward to the end of the Nth camel word
|]w|    N  ]w           forward to the end of the Nth camel word
|]]|    N  ]]           N sections forward, at start of section
|[[|    N  [[           N sections backward, at start of section
|][|    N  ][           N sections forward, at end of section
|[]|    N  []           N sections backward, at end of section
|[(|    N  [(           N times back to unclosed '('
|[{|    N  [{           N times back to unclosed '{'
|[m|    N  [m           N times back to start of method (for Java)
|[M|    N  [M           N times back to end of method (for Java)
|])|    N  ])           N times forward to unclosed ')'
|]}|    N  ]}           N times forward to unclosed '}'
|]m|    N  ]m           N times forward to start of method (for Java)
|]M|    N  ]M           N times forward to end of method (for Java)

*Q_pa*          Pattern searches

|/|     N  /{pattern}[/[offset]]<CR>
                        search forward for the Nth occurrence of {pattern}
|?|     N  ?{pattern}[?[offset]]<CR>
                        search backward for the Nth occurrence of {pattern}
|/<CR>| N  /<CR>        repeat last search, in the forward direction
|?<CR>| N  ?<CR>        repeat last search, in the backward direction
|n|     N  n            repeat last search
|N|     N  N            repeat last search, in opposite direction
|star|  N  *            search forward for the identifier under the cursor
|#|     N  #            search backward for the identifier under the cursor
|gstar| N  g*           like "*", but also find partial matches
|g#|    N  g#           like "#", but also find partial matches
|gd|       gd           goto local declaration of identifier under the cursor
|gD|       gD           goto global declaration of identifier under the cursor

|pattern|               Special characters in search patterns

                        meaning               magic   nomagic   
                matches any single character    .       \.
                       matches start of line    ^       ^
                               matches <EOL>    $       $
                       matches start of word    \<      \<
                         matches end of word    \>      \>
        matches a single char from the range    [a-z]   \[a-z]
      matches a single char not in the range    [^a-z]  \[^a-z]
                  matches an identifier char    \i      \i
                   idem but excluding digits    \I      \I
                 matches a keyword character    \k      \k
                   idem but excluding digits    \K      \K
               matches a file name character    \f      \f
                   idem but excluding digits    \F      \F
               matches a printable character    \p      \p
                   idem but excluding digits    \P      \P
             matches a white space character    \s      \s
         matches a non-white space character    \S      \S

                               matches <Esc>    \e      \e
                               matches <Tab>    \t      \t
                                matches <CR>    \r      \r
                                matches <BS>    \b      \b

     matches 0 or more of the preceding atom    *       \*
     matches 1 or more of the preceding atom    \+      \+
        matches 0 or 1 of the preceding atom    \=      \=
        matches 2 to 5 of the preceding atom    \{2,5}  \{2,5}
                  separates two alternatives    \|      \|
                group a pattern into an atom    \(\)    \(\)

|search-offset|         Offsets allowed after search command

    [num]       [num] lines downwards, in column 1
    +[num]      [num] lines downwards, in column 1
    -[num]      [num] lines upwards, in column 1
    e[+num]     [num] characters to the right of the end of the match
    e[-num]     [num] characters to the left of the end of the match
    s[+num]     [num] characters to the right of the start of the match
    s[-num]     [num] characters to the left of the start of the match
    b[+num]     [num] characters to the right of the start (begin) of the match
    b[-num]     [num] characters to the left of the start (begin) of the match
    ;{search-command}   execute {search-command} next

*Q_ma*          Marks and motions

|m|        m{a-zA-Z}    mark current position with mark {a-zA-Z}
|`a|       `{a-z}       go to mark {a-z} within current file
|`A|       `{A-Z}       go to mark {A-Z} in any file
|`0|       `{0-9}       go to the position where Vim was previously exited
|``|       ``           go to the position before the last jump
|`quote|   `"           go to the position when last editing this file
|`[|       `[           go to the start of the previously operated or put text
|`]|       `]           go to the end of the previously operated or put text
|`<|       `<           go to the start of the (previous) Visual area
|`>|       `>           go to the end of the (previous) Visual area
|`.|       `.           go to the position of the last change in this file
|'|        '{a-zA-Z0-9[]'"<>.}
                        same as `, but on the first non-blank in the line
|:marks|  :marks        print the active marks
|CTRL-O|  N  CTRL-O     go to Nth older position in jump list
|CTRL-I|  N  CTRL-I     go to Nth newer position in jump list
|:ju|     :ju[mps]      print the jump list

*Q_vm*          Various motions

|%|        %            find the next brace, bracket, comment, or "#if"/
                           "#else"/"#endif" in this line and go to its match
|H|     N  H            go to the Nth line in the window, on the first
                           non-blank
|M|        M            go to the middle line in the window, on the first
                           non-blank
|L|     N  L            go to the Nth line from the bottom, on the first
                           non-blank

|go|    N  go                   go to Nth byte in the buffer
|:go|   :[range]go[to] [off]    go to [off] byte in the buffer

*Q_ta*          Using tags


*Q_sc*          Scrolling

|CTRL-E|        N  CTRL-E       window N lines downwards (default: 1)
|CTRL-D|        N  CTRL-D       window N lines Downwards (default: 1/2 window)
|CTRL-F|        N  CTRL-F       window N pages Forwards (downwards)
|CTRL-Y|        N  CTRL-Y       window N lines upwards (default: 1)
|CTRL-U|        N  CTRL-U       window N lines Upwards (default: 1/2 window)
|CTRL-B|        N  CTRL-B       window N pages Backwards (upwards)
|z<CR>|            z<CR> or zt  redraw, current line at top of window
|z.|               z.    or zz  redraw, current line at center of window
|z-|               z-    or zb  redraw, current line at bottom of window
|zh|            N  zh           scroll screen N characters to the right
|zl|            N  zl           scroll screen N characters to the left
|zH|            N  zH           scroll screen half a screenwidth to the right
|zL|            N  zL           scroll screen half a screenwidth to the left

*Q_in*          Inserting text

|a|     N  a    append text after the cursor (N times)
|A|     N  A    append text at the end of the line (N times)
|i|     N  i    insert text before the cursor (N times) (also: <Insert>)
|I|     N  I    insert text before the first non-blank in the line (N times)
|gI|    N  gI   insert text in column 1 (N times)
|o|     N  o    open a new line below the current line, append text (N times)
|O|     N  O    open a new line above the current line, append text (N times)

in Visual block mode:
|v_b_I|    I    insert the same text in front of all the selected lines
|v_b_A|    A    append the same text after all the selected lines

*Q_ai*          Insert mode keys

|insert-index|  alphabetical index of Insert mode commands

leaving Insert mode:
|i_<Esc>|       <Esc>             end Insert mode, back to Normal mode
|i_CTRL-C|      CTRL-C            like <Esc>, but do not use an abbreviation
|i_CTRL-O|      CTRL-O {command}  execute {command} and return to Insert mode

moving around:
|i_<Up>|        cursor keys       move cursor left/right/up/down
|i_<S-Left>|    shift-left/right  one word left/right
|i_<S-Up>|      shift-up/down     one screenful backward/forward
|i_<End>|       <End>             cursor after last character in the line
|i_<Home>|      <Home>            cursor to first character in the line

*Q_ss*          Special keys in Insert mode

|i_<NL>|        <NL> or <CR> or CTRL-M or CTRL-J
                                  begin new line
|i_CTRL-E|      CTRL-E            insert the character from below the cursor
|i_CTRL-Y|      CTRL-Y            insert the character from above the cursor

|i_CTRL-A|      CTRL-A            insert previously inserted text
|i_CTRL-@|      CTRL-@            insert previously inserted text and stop
                                     Insert mode
|i_CTRL-R|      CTRL-R {0-9a-z%#:.-="}  insert the contents of a register


|i_<BS>|        <BS> or CTRL-H    delete the character before the cursor
|i_<Del>|       <Del>             delete the character under the cursor
|i_CTRL-W|      CTRL-W            delete word before the cursor
|i_CTRL-U|      CTRL-U            delete all entered characters in the current
                                     line
|i_CTRL-T|      CTRL-T            insert one shiftwidth of indent in front of
                                       the current line
|i_CTRL-D|      CTRL-D            delete one shiftwidth of indent in front of
                                     the current line
|i_0_CTRL-D|    0 CTRL-D          delete all indent in the current line

*Q_di*          Digraphs

|:dig|     :dig[raphs]          show current list of digraphs

In Insert or Command-line mode:
|i_CTRL-K|      CTRL-K {char1} {char2}
                                  enter digraph
|i_digraph|     {char1} <BS> {char2}
                                  enter digraph if 'digraph' option set

*Q_si*          Special inserts


*Q_de*          Deleting text

|x|     N  x            delete N characters under and after the cursor
|<Del>| N  <Del>        delete N characters under and after the cursor
|X|     N  X            delete N characters before the cursor
|d|     N  d{motion}    delete the text that is moved over with {motion}
|v_d|   {visual}d       delete the highlighted text
|dd|    N  dd           delete N lines
|D|     N  D            delete to the end of the line (and N-1 more lines)
|J|     N  J            join N-1 lines (delete <EOL>s)
|v_J|   {visual}J       join the highlighted lines
|gJ|    N  gJ           like "J", but without inserting spaces
|v_gJ|  {visual}gJ      like "{visual}J", but without inserting spaces
|:d|    :[range]d [x]   delete [range] lines [into register x]

*Q_cm*          Copying and moving text

|quote|   "{char}       use register {char} for the next delete, yank, or put
|:reg|    :reg          show the contents of all registers
|:reg|    :reg {arg}    show the contents of registers mentioned in {arg}
|y|       N  y{motion}  yank the text moved over with {motion} into a register
|v_y|        {visual}y  yank the highlighted text into a register
|yy|      N  yy         yank N lines into a register
|Y|       N  Y          yank N lines into a register
|p|       N  p          put a register after the cursor position (N times)
|P|       N  P          put a register before the cursor position (N times)
|]p|      N  ]p         like p, but adjust indent to current line
|[p|      N  [p         like P, but adjust indent to current line
|gp|      N  gp         like p, but leave cursor after the new text
|gP|      N  gP         like P, but leave cursor after the new text

*Q_ch*          Changing text

|r|       N  r{char}    replace N characters with {char}
|R|       N  R          enter Replace mode (repeat the entered text N times)
|v_b_r|   {visual}r{char}
                        in Visual block mode: Replace each char of the
                           selected text with {char}

        (change = delete text and enter Insert mode)
|c|       N  c{motion}  change the text that is moved over with {motion}
|v_c|        {visual}c  change the highlighted text
|cc|      N  cc         change N lines
|S|       N  S          change N lines
|C|       N  C          change to the end of the line (and N-1 more lines)
|s|       N  s          change N characters
|v_b_c|      {visual}c  in Visual block mode: Change each of the selected
                           lines with the entered text
|v_b_C|      {visual}C  in Visual block mode: Change each of the selected
                           lines until end-of-line with the entered text

|~|       N  ~          switch case for N characters and advance cursor
|v_~|        {visual}~  switch case for highlighted text
|v_u|        {visual}u  make highlighted text lowercase
|v_U|        {visual}U  make highlighted text uppercase
|g~|         g~{motion} switch case for the text that is moved over with
                           {motion}
|gu|         gu{motion} make the text that is moved over with {motion}
                           lowercase
|gU|         gU{motion} make the text that is moved over with {motion}
                           uppercase

|CTRL-A|  N  CTRL-A     add N to the number at or after the cursor
|CTRL-X|  N  CTRL-X     subtract N from the number at or after the cursor

|<|       N  <{motion}  move the lines that are moved over with {motion} one
                           shiftwidth left
|<<|      N  <<         move N lines one shiftwidth left
|>|       N  >{motion}  move the lines that are moved over with {motion} one
                           shiftwidth right
|>>|      N  >>         move N lines one shiftwidth right

*Q_co*          Complex changes

|!!|       N  !!{command}<CR>
                        filter N lines through {command}
|v_!|         {visual}!{command}<CR>
                        filter the highlighted lines through {command}
|:range!|  :[range]! {command}<CR>
                        filter [range] lines through {command}
|==|       N  ==        filter N lines through 'equalprg'
|v_=|         {visual}=
                        filter the highlighted lines through 'equalprg'
|:s|       :[range]s[ubstitute]/{pattern}/{string}/[g][c]
                        substitute {pattern} by {string} in [range] lines;
                           with [g], replace all occurrences of {pattern};
                           with [c], confirm each replacement
|:s|       :[range]s[ubstitute] [g][c]
                        repeat previous ":s" with new range and options
|&|           &         Repeat previous ":s" on current line without options

*Q_vi*          Visual mode

|visual-index|  list of Visual mode commands.

|v|        v            start highlighting characters  }  move cursor and use
|V|        V            start highlighting linewise    }  operator to affect
|CTRL-V|   CTRL-V       start highlighting blockwise   }  highlighted text
|v_o|      o            exchange cursor position with start of highlighting
|gv|       gv           start highlighting on previous visual area
|v_v|      v            highlight characters or stop highlighting
|v_V|      V            highlight linewise or stop highlighting
|v_CTRL-V| CTRL-V       highlight blockwise or stop highlighting

*Q_to*          Text objects (only in Visual mode or after an operator)

|v_aw|  N  aw           Select "a word"
|v_iw|  N  iw           Select "inner word"
|v_aW|  N  aW           Select "a |WORD|"
|v_iW|  N  iW           Select "inner |WORD|"
|v_as|  N  as           Select "a sentence"
|v_is|  N  is           Select "inner sentence"
|v_ap|  N  ap           Select "a paragraph"
|v_ip|  N  ip           Select "inner paragraph"
|v_ab|  N  ab           Select "a block" (from "[(" to "])")
|v_ib|  N  ib           Select "inner block" (from "[(" to "])")
|v_aB|  N  aB           Select "a Block" (from "[{" to "]}")
|v_iB|  N  iB           Select "inner Block" (from "[{" to "]}")

*Q_re*          Repeating commands

|.|        N  .         repeat last change (with count replaced with N)
|q|           q{a-z}    record typed characters into register {a-z}
|q|           q{A-Z}    record typed characters, appended to register {a-z}
|q|           q         stop recording
|@|        N  @{a-z}    execute the contents of register {a-z} (N times)
|@@|       N  @@           repeat previous @{a-z} (N times)
|:@|       :@{a-z}      execute the contents of register {a-z} as an Ex
                           command
|:@@|      :@@          repeat previous :@{a-z}

*Q_km*          Key mapping


*Q_ab*          Abbreviations


*Q_op*          Options

|:set|          :se[t]                    Show all modified options.
|:set|          :se[t] all                Show all non-termcap options.
|:set|          :se[t] {option}           Set boolean option (switch it on),
                                          show string or number option.
|:set|          :se[t] no{option}         Reset boolean option (switch it off).
|:set|          :se[t] inv{option}        invert boolean option.
|:set|          :se[t] {option}={value}   Set string/number option to {value}.
|:set|          :se[t] {option}+={value}  append {value} to string option, add
                                          {value} to number option
|:set|          :se[t] {option}-={value}  remove {value} to string option,
                                          subtract {value} from number option
|:set|          :se[t] {option}?          Show value of {option}.
|:set|          :se[t] {option}&          Reset {option} to its default value.


Short explanation of each option:               *option-list*
|'digraph'|       |'dg'|     enable the entering of digraphs in Insert mode
|'gdefault'|      |'gd'|     the ":substitute" flag 'g' is default on
|'hlsearch'|      |'hls'|    highlight matches with last search pattern
|'history'|       |'hi'|     number of command-lines that are remembered
|'ignorecase'|    |'ic'|     ignore case in search patterns
|'matchpairs'|    |'mps'|    pairs of characters that "%" can match
|'more'|                     pause listings when the whole screen is filled
|'nrformats'|     |'nf'|     number formats recognized for CTRL-A command
|'scroll'|        |'scr'|    lines to scroll with CTRL-U and CTRL-D
|'scrolljump'|    |'sj'|     minimum number of lines to scroll
|'scrolloff'|     |'so'|     minimum nr. of lines above and below cursor
|'selection'|     |'sel'|    what type of selection to use
|'showmode'|      |'smd'|    message on status line to show current mode
|'sidescroll'|    |'ss'|     minimum number of columns to scroll horizontal
|'sidescrolloff'| |'siso'|   min. nr. of columns to left and right of cursor
|'smartcase'|     |'scs'|    no ignore case when pattern has uppercase
|'undolevels'|    |'ul'|     maximum number of changes that can be undone
|'visualbell'|    |'vb'|     use visual bell instead of beeping
|'wrapscan'|      |'ws'|     searches wrap around the end of the file

*Q_ur*          Undo/Redo commands

|u|       N  u          undo last N changes
|CTRL-R|  N  CTRL-R     redo last N undone changes

*Q_et*          External commands

|:!|            :!{command}     execute {command} with a shell
|K|                K            lookup keyword under the cursor with
                                   'keywordprg' program (default: "man")

*Q_qf*          Quickfix commands


*Q_vc*          Various commands

|CTRL-G|           CTRL-G       show current file name (with path) and cursor
                                   position
|ga|               ga           show ascii value of character under cursor in
                                   decimal, hex, and octal
|g_CTRL-G|         g CTRL-G     show cursor column, line, and character
                                   position
|<Del>|            <Del>        while entering a count: delete last character
|:browse|       :browse {command}       open/read/write file, using a
                                        file selection dialog

*Q_ce*          Command-line editing

|:history|      :his[tory]         show older command-lines

*Q_ra*          Ex ranges

|:range|        ,               separates two line numbers
|:range|        ;               idem, set cursor to the first line number
                                before interpreting the second one

|:range|        {number}        an absolute line number
|:range|        .               the current line
|:range|        $               the last line in the file
|:range|        %               equal to 1,$ (the entire file)
|:range|        *               equal to '<,'> (visual area)
|:range|        't              position of mark t
|:range|        /{pattern}[/]   the next line where {pattern} matches
|:range|        ?{pattern}[?]   the previous line where {pattern} matches

|:range|        +[num]          add [num] to the preceding line number
                                   (default: 1)
|:range|        -[num]          subtract [num] from the preceding line
                                   number (default: 1)

*Q_ex*          Special Ex characters


*Q_ed*          Editing a file

|:find|    :fin[d][!] {file}    Find {file} in 'path' and edit it.

|CTRL-^|   N   CTRL-^           Edit alternate file N (equivalent to ":e #N").

*Q_fl*          Using the argument list                 |argument-list|

|:wn|      :wn[ext][!]          Write file and edit next file.
|:wn|      :wn[ext][!] {file}   Write to {file} and edit next file, unless
                                   {file} exists.  With !, overwrite existing
                                   file.
|:wN|      :wN[ext][!] [file]   Write file and edit previous file.

             in current window    in new window 
|:next|      :n[ext]              :sn[ext]              Edit next file
|:Next|      :N[ext]              :sN[ext]              Edit previous file
|:first|     :fir[st]             :sfir[st]             Edit first file
|:last|      :la[st]              :sla[st]              Edit last file

*Q_wq*          Writing and quitting

|:w|      :[range]w[rite][!]            Write to the current file.
|:wall|   :wa[ll][!]                    write all changed buffers

|:q|      :q[uit]               Quit current buffer, unless changes have been
                                   made.  Exit Vim when there are no other
                                   non-help buffers
|:q|      :q[uit]!              Quit current buffer always, discard any
                                   changes.  Exit Vim when there are no other
                                   non-help buffers
|:qa|     :qa[ll]               Exit Vim, unless changes have been made.
|:qa|     :qa[ll]!              Exit Vim always, discard any changes.

|:wq|     :wq[!]                Write the current file and exit.
|:wq|     :wq[!] {file}         Write to {file} and exit.
|:xit|    :x[it][!] [file]      Like ":wq" but write only when changes have
                                   been made
|ZZ|         ZZ                 Same as ":x".
|ZQ|         ZQ                 Same as ":q!".
|:xall|   :xa[ll][!]  or :wqall[!]
                                Write all changed buffers and exit


*Q_st*          Starting VIM


*Q_ac*          Automatic Commands


*Q_wi*          Multi-window commands


*Q_bu*          Buffer list commands


*Q_sy*          Syntax Highlighting


*Q_gu*          GUI commands



*Q_fo*          Folding

|zc|            zc                      close one fold under the cursor

|zM|            zM                      close all folds: make 'foldlevel' zero
|zR|            zR                      open all folds: make 'foldlevel' max.