# HG changeset patch # User vimboss # Date 1134336442 0 # Node ID d133e7c550d0b58c1e67b8f0015cd686eef970e9 # Parent 3686831cf3da094c66ca4d2ab2c671d3d2e2d497 updated for version 7.0167 diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.0aa. Last change: 2005 Dec 09 +*index.txt* For Vim version 7.0aa. Last change: 2005 Dec 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1255,6 +1255,7 @@ The commands are sorted on the non-optio |:nmenu| :nme[nu] add menu for Normal mode |:nnoremap| :nn[oremap] like ":noremap" but for Normal mode |:nnoremenu| :nnoreme[nu] like ":noremenu" but for Normal mode +|:noautocmd| :noa[utocmd] following command don't trigger autocommands |:noremap| :no[remap] enter a mapping that will not be remapped |:nohlsearch| :noh[lsearch] suspend 'hlsearch' highlighting |:noreabbrev| :norea[bbrev] enter an abbreviation that will not be diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.0aa. Last change: 2005 Oct 14 +*map.txt* For Vim version 7.0aa. Last change: 2005 Dec 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -425,7 +425,7 @@ otherwise you would not be able to use t suggestions: - Function keys , , etc.. Also the shifted function keys , , etc. Note that is already used for the help command. -- Meta-keys (with the ALT key pressed). +- Meta-keys (with the ALT key pressed). |:map-alt-keys| - Use the '_' or ',' character and then any other character. The "_" and "," commands do exist in Vim (see |_| and |,|), but you probably never use them. - Use a key that is a synonym for another command. For example: CTRL-P and @@ -458,14 +458,15 @@ you type slowly, or your system is slow, might want to set the 'ttimeout' option. *map-keys-fails* -There is one situation where key codes might not be recognized: +There are situations where key codes might not be recognized: - Vim can only read part of the key code. Mostly this is only the first character. This happens on some Unix versions in an xterm. - The key code is after character(s) that are mapped. E.g., "" or "g". + The result is that the key code is not recognized in this situation, and the -mapping fails. -There are two actions needed to avoid this problem: +mapping fails. There are two actions needed to avoid this problem: + - Remove the 'K' flag from 'cpoptions'. This will make Vim wait for the rest of the characters of the function key. - When using to the actual key code generated may correspond to @@ -481,6 +482,9 @@ special key: > Don't type a real , Vim will recognize the key code and replace it with anyway. +Another problem may be that when keeping ALT or Meta pressed the terminal +prepends ESC instead of setting the 8th bit. See |:map-alt-keys|. + *recursive_mapping* If you include the {lhs} in the {rhs} you have a recursive mapping. When {lhs} is typed, it will be replaced with {rhs}. When the {lhs} which is @@ -555,6 +559,48 @@ If the terminal key code was recognized written to the script file. If it was recognized as a terminal code the internal code is written to the script file. + +Mapping ALT-keys *:map-alt-keys* + +In the GUI Vim handles the Alt key itself, thus mapping keys with ALT should +always work. But in a terminal Vim gets a sequence of bytes and has to figure +out whether ALT was pressed or not. + +By default Vim assumes that pressing the ALT key sets the 8th bit of a typed +character. Most decent terminals work that way, such as xterm, aterm and +rxvt. If your mappings don't work it might be that the terminal is +prefixing the character with an ESC character. But you can just as well type +ESC before a character, thus Vim doesn't know what happened (except for +checking the delay between characters, which is not reliable). + +As of this writing, some mainstream terminals like gnome-terminal and konsole +use the ESC prefix. There doesn't appear a way to have them use the 8th bit +instead. Xterm, aterm and rxvt should work well by default, unless you tweak +resources like "metaSendsEscape", "eightBitInput" and "eightBitOutput". + +On the Linux console, this behavior can be toggled with the "setmetamode" +command. Bear in mind that not using an ESC prefix could get you in trouble +with other programs. You should make sure that bash has the "convert-meta" +option set to "on" in order for your Meta keybindings to still work on it +(it's the default readline behavior, unless changed by specific system +configuration). For that, you can add the line: > + + set convert-meta on + +to your ~/.inputrc file. If you're creating the file, you might want to use: > + + $include /etc/inputrc + +as the first line, if that file exists on your system, to keep global options. +This may cause a problem for entering special characters, such as the umlaut. +Then you should use CTRL-V before that character. + +Bear in mind that convert-meta has been reported to have troubles when used in +UTF-8 locales. On terminals like xterm, the "metaSendsEscape" resource can be +toggled on the fly through the "Main Options" menu, by pressing Ctrl-LeftClick +on the terminal; that's a good last resource in case you want to send ESC when +using other applications but not when inside VIM. + ============================================================================== 2. Abbreviations *abbreviations* *Abbreviations* diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -1806,6 +1806,20 @@ do_one_cmd(cmdlinep, sourcing, #endif continue; + case 'n': if (!checkforcmd(&ea.cmd, "noautocmd", 3)) + break; +#ifdef FEAT_AUTOCMD + if (cmdmod.save_ei == NULL) + { + /* Set 'eventignore' to "all". Don't free the + * existing option value, we restore it later. */ + cmdmod.save_ei = vim_strsave(p_ei); + set_string_option_direct((char_u *)"ei", -1, + (char_u *)"all", OPT_FREE); + } +#endif + continue; + case 'r': if (!checkforcmd(&ea.cmd, "rightbelow", 6)) break; #ifdef FEAT_WINDOWS @@ -2595,6 +2609,14 @@ doend: if (verbose_save >= 0) p_verbose = verbose_save; +#ifdef FEAT_AUTOCMD + if (cmdmod.save_ei != NULL) + { + /* Restore 'eventignore' to the value before ":noautocmd". */ + set_string_option_direct((char_u *)"ei", -1, cmdmod.save_ei, OPT_FREE); + free_string_option(cmdmod.save_ei); + } +#endif cmdmod = save_cmdmod; diff --git a/src/vim.h b/src/vim.h --- a/src/vim.h +++ b/src/vim.h @@ -1576,7 +1576,8 @@ int vim_memcmp __ARGS((void *, void *, s #define VV_SCROLLSTART 44 #define VV_SWAPNAME 45 #define VV_SWAPCHOICE 46 -#define VV_LEN 47 /* number of v: vars */ +#define VV_SWAPCOMMAND 47 +#define VV_LEN 48 /* number of v: vars */ #ifdef FEAT_CLIPBOARD